- Elkha - Blue
- 오토핫키 커뮤니티
- 오토핫키
Nox 에서 PostMessage 가 안되요.
-
-
http://tailstar.kr/autohotkey/1803504 생물님 내용 참고하여 PostMessage로 마우스 클릭 했는데
이미지서치로 찾는데 아래 그림과 같이 빨간 점이 이상한데 찍히네요. 구글플레이 아이콘에 찍혀야 하는데요 ㅜㅜ
감사합니다.
CoordMode, Pixel, Screen ;<- 좌표기준설정
global ActiveID:="test01.png - 그림판"
SetWorkingDir %A_ScriptDir%
WinActivate, %ActiveID% ;<-블루스택활성화
WinSet, AlwaysOnTop, on, %ActiveID% ;<-블루스택 창이 항상 위로
WinGetPos, X, Y, W, H, %ActiveID% ;<- 블루스택의 위치 x좌표를 X에, y좌표를 Y에, 넓이를 W에, 높이를 H에 저장
SysGet, E, 32 ; <-보더두께값을 변수 E 에 저장
SysGet, Q, 4 ; <-제목표시줄두께값을 변수 Q에 저장
X2:=X+W ; <- 블루스택 위치의 x좌표와 넓이를 더한값을 X2에 저장
Y2:=Y+H ; <- 블루스택의 위치의 y좌표와 높이를 더한값을 Y2에 저장
img := "pic\test01.png"
F1::
ImageSearch, X1, Y1,%X%, %Y%, %X2%, %Y2%, *50 %A_ScriptDir%\%img% ;<-여기서 저장되는 X1, Y1은 Relative좌표값
If(Errorlevel=0)
{
X1:=X1-E ;<-그래서 구해진 Relative좌표값에 보더값을 빼서 Client좌표값으로 변경
Y1:=Y1-Q ;<- 위와 동일
N:=X1|Y1<<16 ;<-좌표를 16진수로 변환
PostMessage, 0X201, 1, %N%,Afx:00000000FFA40000:81 , %ActiveID%
PostMessage, 0X202, 0, %N%,Afx:00000000FFA40000:81 , %ActiveID%
}
return
-
생물님이 쓴 글에는 오류가 있습니다.
CoordMode, Pixel, Screen ;<- 좌표기준설정
ImageSearch, X1, Y1,%X%, %Y%, %X2%, %Y2%, *50 %A_ScriptDir%\%img% ;<-여기서 저장되는 X1, Y1은 Relative좌표값
좌표기준설정 픽셀을 스크린으로 하였기 때문에 이미지서치가 반환하는 좌표는 Relative가 아닌 스크린좌표입니다.
클라이언트 좌표로 변환하기 위에선 스크린에서 윈도우의 좌표를 빼주어야 합니다.
그리고 하나 더 y좌표에 캡션값만 빼주었고 보더값을 빼주지 않았습니다. 결론적으로
X1:=X1-X-E
Y1:=Y1-Y-Q-E
이렇게 바꿔줘야 제대로 된 클라이언트 좌표가 됩니다. -
http://tailstar.kr/autohotkey/12158681
응용해서 쓰세요
녹스 설정된 소스입니다
ImageSearch 로 구한 좌표는 스크린좌표니 클라이언트 좌표로 바꿔줘야죠.