- Elkha - Blue
- 오토핫키 커뮤니티
- 오토핫키
Gui ActiveX 에 Send,{Enter} 가 안들어가네요 ㅠㅠ.
-
-
으 저는 Class 를 나눠서 작업하질않아서 햇갈리네요.
#SingleInstance,force
Gui, Color, White
Gui, Font, S18
Gui, Add, ActiveX,x0 y0 w1000 h650 vWEB HScroll ,www.naver.com
Gui, Add, Text, x0 y655 w1000 h30 cBlue Center vShowText,F1 시작
Gui, Show, w1000 h680, 타이틀
Global WEB
return
F1::
OnMessage("13", "1835009", "256", hwnd)
return
OnMessage(wParam, lParam, Msg, hwnd)
{
static fields := "hWnd,Msg,wParam,lParam,A_EventInfo,A_GuiX,A_GuiY"
global WEB
hWnd := hwnd
if (Msg == 0x100)
{
pipa := ComObjQuery(WEB.document, "{00000117-0000-0000-C000-000000000046}")
VarSetCapacity(Msgs, 48)
Loop Parse, fields, `, ;`
NumPut(%A_LoopField%, Msgs, (A_Index-1)*A_PtrSize)
TranslateAccelerator := NumGet(NumGet(1*pipa)+5*A_PtrSize)
Loop 2
r := DllCall(TranslateAccelerator, "Ptr",pipa, "Ptr",&Msgs)
until wParam != 9 || WEB.document.activeElement != ""
ObjRelease(pipa)
if r = 0
return 0
}
}
어디가 틀렸나요? hwnd 값을넘겨줘야 하는거같은데 activex hwnd 값을만들어서 넘겨줘도 반응이없네요...추가로 이렇게만들면 F1눌렀을때 다른창에는 아무런영향이없는거 맞나요? (비활성입력랑 같은셈인가요?)
저는 비활성엔터가필요합니다.
-
클래스로 안짜시면 OnMessage를 함수로 만들면 안됩니다, 저건 오브젝트로 만들때의 OnMessage 내장함수에요
함수밖에서 생성하는 변수는 모두 Global 변수에요, 잘못 이해하고 계신거 같네요! (Global WEB 필요없음)
그리고 웹을 비활성으로 컨트롤하시려면 이런거보다 DOM을 사용하는게 훨씬 쉽고 정확해요
#SingleInstance,force
OnMessage(0x0100, "WM_KeyPress"), OnMessage(0x0101, "WM_KeyPress")
Gui, Color, White
Gui, Font, S18
Gui, Add, ActiveX,x0 y0 w1000 h650 vWEB HScroll ,www.naver.com
Gui, Add, Text, x0 y655 w1000 h30 cBlue Center vShowText,F1 시작
IOleInPlaceActiveObject_Interface:="{00000117-0000-0000-C000-000000000046}"
pipa := ComObjQuery(WEB, IOleInPlaceActiveObject_Interface )
TranslateAccelerator := NumGet(NumGet(pipa+0 ) + 5*A_PtrSize )
Gui, Show, w1000 h680, 타이틀
return
F1::
ControlGet, hShell, Hwnd,, Internet Explorer_Server1, A
WM_KeyPress("13", "1835009", "256", hShell)
return
WM_KeyPress(wParam, lParam, nMsg, hWnd ) {
Global WEB, pipa, TranslateAccelerator
Static Vars := "hWnd | nMsg | wParam | lParam | A_EventInfo | A_GuiX | A_GuiY"
VarSetCapacity( MSG, 48, 0 )
Loop, Parse, Vars, |, %A_Space%
NumPut( %A_LoopField%, MSG, ( A_Index-1 ) * A_PtrSize )
Loop 2
r := DllCall( TranslateAccelerator, UInt,pipa, UInt,&MSG )
Until wParam != 9 || WEB.document.activeElement != ""
IfEqual, R, 0, Return, 0
}
분류 | 제목 | 글쓴이 | 최근변경 | 추천 |
---|---|---|---|---|
질문 | Gui ActiveX 에 Send,{Enter} 가 안들어가네요 ㅠㅠ. 3 | _Crash | 2015.10.20 | 0/0 |
자유 | 오토핫키 질문좀 할ㄹ려고하는데 어디해야할지 몰라서 ... | 수지가좋아 | 2015.10.17 | 0/0 |
질문 | Nox 에서 PostMessage 가 안되요. 4 | 마천루 | 2015.10.18 | 0/0 |
질문 | 비활성 붙여넣기 명령어 좀 알려주세요 ㅠㅠ 1 | KAZUYA | 2015.10.17 | 0/0 |
질문 | Gui ActiveX. 에서 Tab입력시 입력이들어가질않네요. ... 5 | _Crash | 2015.10.17 | 0/0 |
질문 | Nox 비활성입력 해보신분? 2 | _Crash | 2015.10.15 | 0/0 |
질문 | 이 오류좀 도와주세요..ㅠㅠ 2 | 횬히 | 2015.10.21 | 0/0 |
질문 | gdip 이미지서치 질문입니다. 2 | 비빔면 | 2015.10.14 | 0/0 |
자유 | GUI만들기 너무 귀찮네요. 15 | 외치기 | 2015.10.21 | 0/0 |
질문 | 님들 윈도우10에서 이미지서치나 픽셀서치 겟픽셀 어떤... 6 | MC하얀늑대 | 2015.10.21 | 0/0 |
질문 | 루프중인 스레드 중지 4 | 엑시노트 | 2015.10.12 | 0/0 |
질문 | 오토핫키 여러사진 이미지 서치 질문 3 | aces | 2015.10.12 | 0/0 |
질문 | 이에러좀 봐주세요 ... 9 | 제발등업좀2 | 2015.10.12 | 0/0 |
질문 | 이미지서치 픽셀서치를 여러개 할때 3 | 위험인물1 | 2015.10.11 | 0/0 |
질문 | ADB IP 얻어오는법 관련 질문드립니다 (__)(--)(__) 굽... 24 | 제발등업좀2 | 2015.10.10 | 0/-1 |
질문 | adb방식이 구체적으로 어떤건가요? 5 | 세븐나이쯔 | 2015.11.24 | 1/0 |
질문 | gui 질문드리겠습니다. 8 | doprop | 2015.10.15 | 0/0 |
질문 | 오토핫키 설치시 에러 1 | 별사탕 | 2015.10.09 | 0/0 |
질문 | 이미지서치 오차율 질문 다시한번 5 | fnwj | 2015.10.11 | 0/0 |
자유 | 흠냐 오토핫키와 c++ 연관성 | 34f35 | 2015.10.09 | 0/0 |
블로그에도 문의해주셨는데 코드가 길어서 여기에 답변해드릴게요
검색창에 아무렇게나 치고 F1 눌러보세요
#NoEnv
#NoTrayIcon
#SingleInstance Off
#KeyHistory 0
ListLines Off
SetBatchLines, -1
Init := new Browser()
return
F1::
Init.OnMessage("13", "1835009", "256", Init.hWnd)
return
class Browser
{
static URL := "https://duckduckgo.com"
__New()
{
global
Gui, New, +Resize +hwndhMain
this.hMain := hMain
Gui, Add, ActiveX, x0 y0 w500 h500 hwndhEmbed vWB, Shell.Explorer
this.hEmbed := hEmbed
WB.silent := true, WB.Navigate(this.URL)
this.Bound := []
this.Bound.OnMessage := this.OnMessage.Bind(this)
WinEvents.Register(this.hMain, this)
for each, Msg in [0x100, 0x201, 0x202, 0x204]
OnMessage(Msg, this.Bound.OnMessage)
Gui,Show, % " w" A_ScreenWidth*0.7 " h" A_ScreenHeight*0.7 , 브라우저
}
GuiSize()
{
DllCall("MoveWindow", "Ptr", this.hEmbed, "Int", 0, "Int", 0, "Int", A_GuiWidth, "Int", A_GuiHeight, "Int", 1)
}
GuiClose()
{
for each, Msg in [0x100, 0x201, 0x202, 0x204]
OnMessage(Msg, this.Bound.OnMessage, 0)
this.Delete("Bound"), WinEvents.Unregister(this.hMain)
Gui, Destroy
ExitApp
}
OnMessage(wParam, lParam, Msg, hWnd)
{
static fields := "hWnd,Msg,wParam,lParam,A_EventInfo,A_GuiX,A_GuiY"
global WB
this.hWnd := hWnd
if (Msg == 0x100)
{
pipa := ComObjQuery(WB.document, "{00000117-0000-0000-C000-000000000046}")
VarSetCapacity(Msgs, 48)
Loop Parse, fields, `, ;`
NumPut(%A_LoopField%, Msgs, (A_Index-1)*A_PtrSize)
TranslateAccelerator := NumGet(NumGet(1*pipa)+5*A_PtrSize)
Loop 2
r := DllCall(TranslateAccelerator, "Ptr",pipa, "Ptr",&Msgs)
until wParam != 9 || WB.document.activeElement != ""
ObjRelease(pipa)
if r = 0
return 0
}
}
}
class WinEvents
{
static Table := {}
Register(hWnd, Class, Prefix="Gui")
{
Gui, +LabelWinEvents.
this.Table[hWnd] := {Class: Class, Prefix: Prefix}
}
Unregister(hWnd)
{
this.Table.Delete(hWnd)
}
Dispatch(hWnd, Type)
{
Info := this.Table[hWnd]
return Info.Class[Info.Prefix . Type].Call(Info.Class)
}
Close()
{
return WinEvents.Dispatch(this, "Close")
}
Size()
{
return WinEvents.Dispatch(this, "Size")
}
}