AHK 기초편 2 응용
마우스의 위치를 알아보자
1편에서 spy를 이용하여 마우스의 스크린상의 좌표와,활성창의 좌표알아냈었습니다.
이번엔 spy에 의존하지 않고 만들어서 해보도록 하죠.
F1::
coordmode, mouse, screen ; mouse의 좌표를 스크린에 기준
mousegetpos, mouseX, mouseY ; 마우스 x,y좌표를 변수 mouseX,mouseY에 대입
msgbox, x=%mouseX% y=%mouseY% ; msgbox로 %mouseX% %mouseY% 출력
return
F2::
coordmode, mouse, relative ; mouse의 좌표를 활성창에 기준
mousegetpos, mouseX, mouseY
msgbox, x=%mouseX% y=%mouseY%
return
F1을 누르면 스크린상의 x,y좌표가 메시지박스로 표시됩니다.
F2를 누르면 활성된 창기준의 x,y좌표가 메시지박스로 표시됩니다.
*coordmode
CoordMode, ToolTip|Pixel|Mouse|Caret|Menu [, Screen|Relative]
Pixel
PixelGetColor와 PixelSearch,ImageSearch그리고 사용하는 좌표
Mouse
MouseMove,MouseClick,MouseClickDrag,MouseGetPos그리고 사용하는 좌표
Screen
스크린상에서의 절대 좌표
Relative
액티브 윈도우의 좌상으로부터의 상대 좌표
*mousegetpos
마우스가 위치하고 있는 상태를 얻어낸다.
mousegetpos,x,y
(창정보를 얻는다 마우스 아래의 핸들과 컨트롤을 얻을수 있으나 초보자를 대상으로하여 생략)
화면의 픽셀값을 알아보자 (일정점의 색값)
F1::
coordmode, pixel, screen ;픽셀값얻는 좌표의 기준을 스크린에 지정
pixelgetcolor, color, 100,100 ;color라는 변수에 화면의 100,100지점의 색을 대입한다
msgbox, %color%
return
F2::
coordmode, pixel, relative ;픽셀값얻는 좌표의 기준을 활성창에 지정
pixelgetcolor, color, 100,100
msgbox, %color%
return
F1을 실행하면 모니터 좌상부분의 100,100의 색값을 얻는다.
F2를 실행하면 활성된 창의 좌상부분 기준 100,100의 색값을 얻는다.
응용-마우스가 위치한곳의 좌표와 색값을 얻어보자.
F1::
coordmode, mouse, screen ; mouse의 좌표를 스크린에 기준
coordmode, pixel, screen ;픽셀값얻는 좌표의 기준을 스크린에 지정
mousegetpos, mouseX, mouseY ; 마우스 x,y좌표를 변수 mouseX,mouseY에 대입
pixelgetcolor, color, %mouseX%, %mouseY% ;color라는 변수에 현재 마우스 x,y지점 색값을 대입
msgbox, x=%mouseX% y=%mouseY% color=%color% ; msgbox로 %mouseX% %mouseY% %color% 를 보여준다.
return
F1을 누를시 메시지박스로 현 마우스의 좌표와 (스크린기준) 색값을 얻을수 있다.
위에서 언급한 두가지를 합쳐놓은것일 뿐이죠.
응용-마우스를 움직이다가 마우스가 검은색에 위치하게 되면 msgbox가 뜨게 만들어보자(스크린기준)
F1::
coordmode, pixel, screen ;mouse의 좌표를 스크린에 기준
coordmode, mouse, screen ;픽셀값얻는 좌표의 기준을 스크린에 지정
loop ;반복시작
{
mousegetpos, mouseX, mouseY ;마우스 x,y좌표를 변수 mouseX,mouseY에 대입
pixelgetcolor, color, %mouseX%, %mouseY%
if color = 0 ;만약 color가 검은색(0) 이라면 아래 {} 실행(없으면 패스)
{
msgbox, 검은색 발견 좌표 %mouseX%,%mouseY% ;msgbox
break ;만약 검은색을 발견하면 if구문이 발동하면서 break명령에따라 반복구문이 종료
}
} ;반복종료
F1을 누르면 coordmode가 우선적 실행이됩니다. 좌표기준을 일단 정해주고
반복문이 실행이됩니다. 마우스 현재위치의 색값을 얻고 if=0 에 만족할시 msgbox와 함께
break명령이 들어있어 반복이 종료 됩니다.
만약 검은색을 찾지 못하면
mousegetpos, mouseX, mouseY
pixelgetcolor, color, %mouseX%, %mouseY%
if color = 0
{
msgbox, 검은색 발견 좌표 %mouseX%,%mouseY%
break
}
이부분이 검은색을 찾을때까지 무한반복 됩니다.
허접하게 만든 강좌 읽어주셔서 감사합니다 (--)(__)
정작 여러사람이 묻는 이미지 서치를 다루지 않았군요.. 쿨럭..