F1을 누르면 로그가
세나에 접속합니다
이미지\into.bmp 못찾음
ESC
이미지\icon.bmp 못찾음
ESC
ESC
ESC
이렇게 되는데
If(IsImageCheck(x, y, "main.bmp",60,0))
{
getlog("세나 실행 완료")
}
else
{
Send(Esc)
getlog("ESC")
}
이것을 이미지를 기다렸다가 이것을 진행하든가 하고싶은데 어떻게 해야될까요
icon: into: main: 이렇게 각각 만들어서 해야될까요?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | Gdip_ImageSearchWithdHwnd(Hwnd,Byref X,Byref Y,Image,Variation=0,Trans="",sX = 0,sY = 0,eX = 0,eY = 0) { SysGet, wFrame, 7 SysGet, wCaption, 4 gdipToken := Gdip_Startup() bmpHaystack := Gdip_BitmapFromHwnd(Hwnd) bmpNeedle := Gdip_CreateBitmapFromFile(Image) if( sX!= 0 || sY!= 0 || eX!= 0 || eY != 0) { sX := sX + wFrame sY := sY + wCaption + wFrame eX := eX + wFrame eY := eY + wCaption + wFrame } 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 - wFrame Y := LISTArray2 - wCaption - wFrame ;GuiControl,,로그, %bmpHaystack%||%bmpNeedle%||%RET% ;msgbox, %bmpHaystack%,%bmpNeedle%,%RET% if(RET = 1) { return true } else { return false } } IsImageCheck(ByRef ClickX, ByRef ClickY, CKImage, errorRange, trans, sX = 0, sY = 0, eX = 0, eY = 0) { WinGet, Title, ID, BlueStacks App Player If(Gdip_ImageSearchWithdHwnd(Title, ClickX, ClickY, CKImage, errorRange, trans, sX, sY, eX, eY)) { return true } } ;Gdip 함수 ▲ getlog(a) { gui,submit,nohide global 로그넘버 로그넘버 ++ b=%로그넘버% guicontrol,,로그,%A_mon%/%A_MDay% %A_Hour%:%A_Min%:%A_Sec% %a%|| FileAppend,[%A_mon%/%A_MDay% %A_Hour%:%A_Min%:%A_Sec%][%a%]`n, log.txt } ;로그기록 함수 ▲ F1:: Loop { If(IsImageCheck(x, y, "이미지\icon.bmp",60,0)) { Click(x, y) getlog("세나에 접속합니다") } else { getlog("이미지\icon.bmp 못찾음") } If(IsImageCheck(x, y, "이미지\into.bmp",60,0)) { Click(x, y) } else { getlog("이미지\into.bmp 못찾음") } If(IsImageCheck(x, y, "main.bmp",60,0)) { getlog("세나 실행 완료") } else { Send(Esc) getlog("ESC") } } return | cs |
잘찾아보시면 이미지가 나올때까지 기다리는 함수들이 있을텐데요..
간단하게 예를 들면, 위에 작성하신 IsImageCheck라는 함수는 단발성인것 같습니다.
이미지를 기다리게하려면 Loop와 sleep등을 사용하여 작성이 가능합니다.
ex)
Loop
{
if IsImageCheck(x,y, "이미지\icon.bmp", 60,0)) ; 이미지를 찾으면
{
click(x,y)
break ; Loop 빠져나가기
}
sleep,1000
}
이런식으로 구성하게되면 icon.bmp에 해당하는 이미지가 화면에 나타날때까지 1초 간격으로 저 이미지만 찾게 됩니다.
도움이 되셨으면 좋겠습니다.