⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 널리 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
이전 오토핫키 버전과는 많은 부분에서 호환이 되지 않으니,
만약 현시점에서 대중적인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시길 바랍니다.
42. PixelSearch (픽셀 서치)
ImageSearch
는 화면 내의 화상을 찾고, 그 위치를 변수에 담아주는 함수였습니다.
비슷하게, 화면 내에서 원하는 화소의 위치를 찾는 함수인 PixelSearch
를 배워보도록 하겠습니다.
PixelSearch
PixelSearch
함수는 특정 색상을 가진 화소를 찾고, 찾았다면 그 위치를 변수에 담아주는 함수입니다.

ImageSearch
와 유사하지만, 찾는 대상이 '화상'이 아니라 '화소'가 되었습니다.
따라서, 원형 또한 굉장히 유사한 모습을 볼 수 있습니다.
PixelSearch(&OutputVarX, &OutputVarY, X1, Y1, X2, Y2, ColorID [, Variation])
PixelSearch 함수의 원형
매개변수
- &OutputVarX: 찾은 화소의 x 좌표가 담길 변수의 참조
- &OutputVarY: 찾은 화소의 y 좌표가 담길 변수의 참조
- X1: 화소를 찾을 사각 영역의 좌상단 꼭짓점 x좌표
- Y1: 화소를 찾을 사각 영역의 좌상단 꼭짓점 y좌표
- X2: 화소를 찾을 사각 영역의 우하단 꼭짓점 x좌표
- Y2: 화소를 찾을 사각 영역의 우하단 꼭짓점 y좌표
- ImageFile: 찾을 화소의 색상 값
- Variation: 색상 음영 오차 허용도
반환 값
- 1 (true): 화소를 정상적으로 찾았을 때
- 0 (false): 화소를 찾지 못했을 때
각각의 매개변수를 세부적으로 알아보면 아래와 같습니다.
1. &OutputVarX, &OutputVarY
범위 내에서 화소를 찾았을 경우, 찾은 화소의 좌표가 담기는 변수를 참조로 적어줍니다.
MouseGetPos
나 ImageSearch
에서와 마찬가지로, '참조로 적는다'라고 하면 '값이 담길 변수 앞에 & 기호를 붙여서 적는다'는 뜻입니다.
그 원리는 나중에 설명드리기로 했습니다.
2. X1, Y1, X2, Y2
화소를 찾을 영역을 지정해줍니다.
역시 ImageSearch
와 같습니다.
좌표 유형도 마찬가지로 '클라이언트 좌표'를 기본 사용하며, CoordMode("Pixel", 유형)
으로 사용할 좌표 유형을 지정할 수 있다고 했습니다.
3. ColorID
범위 내에서 찾을 화소의 색상 값을 적어줍니다. 색상 값은 좌표를 알아올 때와 마찬가지로 Window Spy로 알아낼 수 있는데, 아래와 같이 현재 마우스 커서가 위치한 화소의 색상 값을 가져올 수 있습니다.

중요한 점은, 색상 값을 16진수로 적어줄 땐 '16진수 수'를 의미하는 0x
기호를 앞에 붙여야 한다는 것입니다.
오토핫키는 앞에 0x
가 붙은 수는 16진수로, 아무것도 붙지 않은 수는 10진수로 해석하기 때문입니다.
따라서, 흰색(R=FF, G=FF, B=FF)을 찾고 싶다면 0xFFFFFF
로 적어야하죠.
4. Variation
ImageSearch
의 *n 옵션과 동일합니다.
(단, *
기호는 쓰지 않습니다.)
마찬가지로 0부터 255까지 적을 수 있으며, 예를 들어서 2를 지정했다면 #444444 색상은 #424242부터 #464646까지 동일한 것으로 간주합니다.
그렇게 어렵지 않죠? 간단한 예제를 하나 만들어보고 마무리해도 될 것 같습니다.
실습
1. 마우스 근처에서 원하는 색상의 화소를 찾아보기
1 F1::
2 {
3 MouseGetPos(&posX, &posY)
4 if (PixelSearch(&vx, &vy, posX, posY, posX + 100, posY + 100, 0x00C896))
5 MsgBox("찾았습니다! (" vx ", " vy ")")
6 }
7
8 F2::
9 {
10 ExitApp
11 }
위 예제는 마우스 커서의 현재 좌표를 가져와, 그 좌표로부터 (x + 100, y + 100) 좌표까지의 범위에서 0x00C896 색상을 찾는 예제입니다. 한마디로 마우스 커서 위치를 좌상단으로 하여, 너비와 높이가 각각 100px인 사각형이 범위인 것이죠.
