사용하고 있는 함수는 아래와 같습니다.
gokey(image)
{
WinGet, Title , ID, BlueStacks App Player ; 핸들값을 얻어온다
if Gdip_ImageSearchWithHwnd(Title,Image, X, Y) = 1
{
Click(X,Y)
sleep 800
}
return
}
Gdip_ImageSearchWithHwnd(Hwnd,Image,Byref X,Byref Y,Variation=0, sX = 0, sY = 0, eX = 0, eY = 0, Trans="0xffffff")
{
gdipToken := Gdip_Startup()
bmpHaystack := Gdip_BitmapFromHwnd(Hwnd)
bmpNeedle := Gdip_CreateBitmapFromFile(Image)
RET := Gdip_ImageSearch(bmpHaystack,bmpNeedle,LIST,sX,sY,eX,eY,Variation,Trans,1,1)
Gdip_DisposeImage(bmpHaystack)
Gdip_DisposeImage(bmpNeedle)
Gdip_Shutdown(gdipToken)
StringSplit, LISTArray, LIST, `,
X := LISTArray1
Y := LISTArray2
return RET
}
Click(x, y)
{
sleep, %TIME_REFRESH%
Coor := x | y<<16
WinGet, ActiveID, ID, BlueStacks App Player
if(x = 0 && y = 0)
{
return false
}
Loop
{
if not getkeystate("Ctrl" , "p")
{
PostMessage, 0x201, 0, %Coor%,, ahk_id %ActiveID%
PostMessage, 0x202, 0, %Coor%,, ahk_id %ActiveID%
break
}
sleep, 100
}
}
사용은
image=Image\1\1.png
WinGet, Title , ID, BlueStacks App Player
if Gdip_ImageSearchWithHwnd(Title,Image, X, Y, 30,,,,,"0x7f7f7f") = 1
{
msgbox,1
}
return
이런식으로 사용중입니다. 질문드리고 싶은건 오차율 , 트랜스 부분은 제대로 작동됩니다만
사용 명령어에서 sX sY eX eY 변수자리에 값을 넣으면 서치가 작동을 하지않습니다.
어느부분이 잘못된걸까요 ?
위쪾 함수 이름이 아마 제가 링크했었던 외치기님gdip파일 같은데
그리고 원래 외치기님이 주셧던 코드에선 Gdip_ImageSearchWithHwnd 함수에서 좌표를 제한하는 인자가 없이
전체화면에서의 서치를 하게 했던걸로 기억하는데 제가 필요해서
안에 코드보면서 대충 찍어맞추기식으로 찾은걸로 기억하는데
제가 좌표제한을 하고 서치를 해봤었는지 잘 기억이 안나네여 코드자체가 틀린걸수도 있지만
다른분들은 말없이 잘쓰시는거보면 그문제는 아닌거 같고
좌표를 잘못넣은게 아닌가 싶습니다