방개
비밀번호를 잊어버리셨나요?

질문

비활성 크롬창을 컨트롤 하고 싶습니다.

    • 글자 크기

안녕하세요. 초보라 글이 장황하고 이해하기 어려울 수 있는 점 미리 양해를 구합니다.

제가 원하는 것은 비활성 크롬 브라우저에서 Gdip_ImageSearch를 통해 좌표값을 구하고 Controlclick으로 그 좌표값을 받아 크롬 브라우저를 컨트롤하는 것입니다. 문제는 Controlclick 단계에서 비활성 크롬 브라우저가 활성화되는 것입니다. Postmessage, Controlclick2 함수 등은 해결할 수 없었으며 이 주제로 구글 검색해 보니 이 현상은 크롬 자체 문제이기에 브라우저를 바꾸거나 chrome.ahk를 통해 우회해야 한다고 합니다. 크롬을 비활성 상태에서 컨트롤 하는 게 이렇게나 번거롭고 어려운 건가요? 주력이 크롬이라 선뜻 바꿀 수도 없는 노릇이고 chrome.ahk는 또 어떻게 사용해야 될지 막막하네요.

#Persistent
#NoEnv
#SingleInstance, Force
DetectHiddenWindows, On
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 2
controlID      := 0
return
#IfWinNotActive, ahk_exe chrome.exe

F1::
    ControlGet, controlID, Hwnd,,Chrome_RenderWidgetHostHWND1, NAVER - Chrome
    ControlFocus,,ahk_id %controlID%
    ControlSend, Chrome_RenderWidgetHostHWND1, ^r, NAVER - Chrome
    ;ControlClick, Chrome_RenderWidgetHostHWND1, ,NAVER - Chrome,,, NA
return
#IfWinNotActive

이 스크립트 Controlsend 부분에 Controlclick을 넣어 응용해보려 하는데 Gdip_ImageSearch의 xy좌표값을 적용하려면 어떻게 해야 될까요? 많은 조언 부탁드립니다. 

 

 

#Include Gdip_All.ahk
#Include Gdip_ImageSearch.ahk
pToken := Gdip_Startup()


pHaystack := Gdip_BitmapFromHWND(WinExist("NAVER - Chrome"))
pNeedle := Gdip_CreateBitmapFromFile("pencil.png")
result := Gdip_ImageSearch(pHaystack, pNeedle, outputVar, 0, 0, 0, 0, 0)
    
Gdip_DisposeImage(pHaystack)
Gdip_DisposeImage(pNeedle)
Gdip_Shutdown(pToken)
    


    if (result = 1)
    {
        RegExMatch(outputVar, "(.*),(.*)", out)

        ControlClick2 (out1,out2, "NAVER - Chrome")
        MsgBox, X: %out1% Y: %out2%
        ;MsgBox %result% ;Gdip_ImageSearch 반환값 1찾음 0못찾음
        ;X:=out1
        ;Y:=out2
        ;lparam:=X|Y<<16
        ;PostMessage,0x201,1,%lparam%,,NAVER - Chrome
        ;PostMessage,0x202,0,%lparam%,,NAVER - Chrome
        ;SetControlDelay -1
        ;ControlSend, Chrome_RenderWidgetHostHWND1, ^+{Tab}, NAVER - Chrome
        ;ControlClick, % " x" . out1 " y" . out2 , NAVER - Chrome,,,, NA
    }
    ;else if (result = 0)
    ;{
        ;RegExMatch(outputVar, "(.*),(.*)", out)
        ;MsgBox, X: %out1% Y: %out2%
        ;Sleep, 500 
    ;}

 

ControlClick2 (X, Y, WinTitle = "", WinText = "", ExcludeTitle = "", ExcludeText = "")   
{   
  hwnd := ControlFromPoint (X, Y, WinTitle, WinText, cX , cY, ExcludeTitle, ExcludeText)   
  ;PostMessage, 0x200, 0, cX & 0xFFFF | cY << 16, ahk_id %hwnd% ; WM_MOUSEMOVE 
  PostMessage, 0x201, 0, cX & 0xFFFF | cY << 16, ahk_id %hwnd% ; WM_LBUTTONDOWN   
  PostMessage, 0x202, 0, cX & 0xFFFF | cY << 16, ahk_id %hwnd% ; WM_LBUTTONUP
}
ExitApp

 

    • 글자 크기
댓글 1
  • 2020.9.5 01:04 댓글

    저도 chrome.ahk는 안써븨서 모르겠고.. 보통 크롬 제어면 셀레니움을 통해 제어할 수 있는 크롬창을 띄운 후 진행하더라고요. (저는 안해봤습니다.)

댓글 달기

서버에 요청 중입니다. 잠시만 기다려 주십시오...