본문 바로가기
programming language/Autohotkey

Autohotkey 를 사용하여 이미지서치시 이미지의 중간을 클릭하게 하기

by __observer__ 2018. 3. 5.
반응형

Autohotkey 를 사용하면  화면의 이미지를 검색하고 클릭하는 등의 작업을 할 수 있습니다. 이러한 작업을 하기 위해서는 Autohotkey 의 ImageSearch 함수를 사용하면 됩니다.   


ImageSearch 함수를 사용하기 위해서는 먼저 찾고자 하는  이미지를 캡쳐 해야 합니다. 윈도우 키를 누른 후에 캡처라고  타이핑 해 보면 캡처 도구가 나옵니다. 캡처 도구를 실행한 후에 검색할 이미지 부분을 캡처 합니다.  제 개인적인 경험에 의하면 아래 포스팅에서 소개했던 prtscr 프로그램을 사용해서 캡처 하는 경우 autohotkey 이미지서치 기능이 정상적으로 동작하지 않는 경우가 있었습니다.


http://iamaman.tistory.com/630



그래서 저는 오토핫키 ImageSearch 기능을 사용하는 경우에는 윈도우 캡처 도구를 사용합니다. 그리고  캡쳐 완료 후에는 해당 이미지를 파일로 파일로 저장 합니다.

아래 코드 예는 구글문서의 음성 인식 마이크를 클릭하는 예 입니다. 윈도우 캡처 도구를 사용하여 마이크 모양에 대한 이미지 부분을 캡처 했고 "C:\캡처.PNG" 경로에 저장했습니다.

#NoEnv

SetWorkingDir %A_ScriptDir%

#SingleInstance Force


CoordMode,Pixel, Screen

CoordMode,Mouse, Screen


ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\캡처.PNG

If ErrorLevel = 0

{

Click, %FoundX%, %FoundY% Left, 1

}  


ExitApp


위 코드를 실행해 보면 이미지의 좌측 상단  부분으로 마우스 커서가 이동하는 것을 확인할 수 있습니다.


보통의 경우 이미지  서치는 마우스클릭을 하기 위해 동작시키는 것이므로 이미지의  중간 부분을 검출에 되는 것이 편할 겁니다.

이를 위해서는 다음과 같은 코드를 사용하면 됩니다 아래 코드에서 CenterImgSrchCoords() 함수 부분은 Pulover's Macro Creator 를 사용하여 생성한 코드 부분 입니다.

에서 생성한 부분입니다.  

#NoEnv

SetWorkingDir %A_ScriptDir%

#SingleInstance Force


CoordMode,Pixel, Screen

CoordMode,Mouse, Screen


CenterImgSrchCoords(File, ByRef CoordX, ByRef CoordY)

{

static LoadedPic

LastEL := ErrorLevel

Gui, Pict:Add, Pic, vLoadedPic, %File%

GuiControlGet, LoadedPic, Pict:Pos

Gui, Pict:Destroy

CoordX += LoadedPicW // 2

CoordY += LoadedPicH // 2

ErrorLevel := LastEL

}


ImageSearch, FoundX, FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, C:\캡처.PNG

CenterImgSrchCoords("C:\캡처.PNG", FoundX, FoundY)

If ErrorLevel = 0

{

Click, %FoundX%, %FoundY% Left, 1

}


ExitApp


CenterImgSrchCoords() 함수의 코드를 확인해 보면 이미지를 로드 한 후에 가로, 세로  폭을 알아내고 해당  폭의 절반을 이미지검색 초기값에  더 해 주는 것을 확인할 수 있습니다.


위 코드를 실행해 보면 다음과 같이 마우스 커서가 검색된 이미지의 중간 부분을 클릭하는 것을 확인 할 수 있습니다.



반응형

댓글