⚠ 이 강좌는 오토핫키 v2를 다룹니다
지금 보시는 강좌는 과거 오랜 시간동안 알려진 오토핫키(v1.1)의 차세대 버전인 오토핫키 v2를 다루고 있습니다.
만약 구버전인 '오토핫키 v1.1'의 강좌를 찾으신다면 프날 오토핫키 강좌(https://pnal.kr)를 봐주시면 되지만,
새로 오토핫키를 배우신다면 v2 버전을 배우시는 것을 강력히 추천드립니다.
42. PixelSearch (픽셀 서치)
마지막 수정일: 2023-12-22
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로 알아낼 수 있는데, 아래와 같이 현재 마우스 커서가 위치한 화소의 색상 값을 가져올 수 있습니다.
사진 1. 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인 사각형이 범위인 것이죠.
사진 2. 마우스 커서 위치를 기준으로 100 x 100 범위 좋습니다. 열심히 했으니 다음 강부터는 조금 쉽게 가보겠습니다.