multiple search가 찾은것을 또 찾는경우가 있어서 약간 수정해보았습니다.
Gdip.ahk라이브러리가 일부사용되었습니다.
<--------------------------------------------- AHK 스크립트 내용 --------------------------------------------->
#include Gdip.ahk
F1::
x_시작:=1
y_시작:=1
x_종료:=A_ScreenWidth
y_종료:=A_ScreenHeight
이미지저장위치=MBR.gif
result:=동일이미지_여러개찾기(x_시작,y_시작,x_종료,y_종료,이미지저장위치)
Loop,Parse,result,`n
{
If A_LoopField=
Break
StringSplit,Pos,A_LoopField,%a_space%
ToolTip,%A_Index%,%Pos1%,%Pos2%,%A_Index%
}
return
동일이미지_여러개찾기(x_시작,y_시작,x_종료,y_종료,이미지저장위치)
{
CoordMode,Pixel,Screen
이미지높이:=GetImgHeight(이미지저장위치)
찾은위치=
Loop
{
ImageSearch,x_위치,y_위치,% x_시작,% y_시작,% x_종료,% y_종료,% 이미지저장위치
if Errorlevel
Break
찾은위치=%찾은위치%%x_위치% %y_위치%`n
찾은위치:=동일이미지_가로찾기(x_위치+1, y_위치, x_종료, y_위치+이미지높이, 이미지저장위치,찾은위치)
y_시작:=y_위치+1
if (y_위치=y_종료)
break
}
return 찾은위치
}
동일이미지_가로찾기(x_시작,y_시작,x_종료,y_일부분,이미지저장위치,찾은위치)
{
ImageSearch,x_위치,y_위치,% x_시작,% y_시작,% x_종료,% y_일부분,% 이미지저장위치
if Errorlevel
return 찾은위치
찾은위치=%찾은위치%%x_위치% %y_위치%`n
if ( x_위치+1 = x_종료 )
return 찾은위치
찾은위치:=동일이미지_가로찾기(x_위치+1, y_시작, x_종료, y_일부분, 이미지저장위치, 찾은위치)
return 찾은위치
}
GetImgHeight(ImgPath)
{
If !pToken := Gdip_Startup()
{
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
ExitApp
}
pBitmap := Gdip_CreateBitmapFromFile(ImgPath)
If !pBitmap
{
MsgBox, 48, File loading error!, Could not load the image specified
ExitApp
}
Height := Gdip_GetImageHeight(pBitmap)
DeleteObject(hbm)
DeleteDC(hdc)
Gdip_DeleteGraphics(G)
Gdip_DisposeImage(pBitmap)
Gdip_Shutdown(pToken)