#Include, Gdip_all.ahk
#Include, Gdip_ImageSearch.ahk
#Include, Search_img.ahk
.
GUI 생략
.
Gui, Add, Checkbox, xp+30 yp-5 w70 h20 v서치좀, 해라
Gui, Add, Checkbox, xp+80 yp w70 h20 v정신차리자, 서치
Gui, Tab, 일반설정2
Gui, Show,w400 h350
Button시작:
{
;; 초기실생 이것저것 생략
;SetTimer, event ,10001
;로그("event 시작")
;Sleep, 1000
;SetTimer, event2 ,2000 ; 이것이 문제....작동되면 이미지 엉뚱한게 서치성공됐다고 계속뜸..
Main()
}
return
Main()
{
while(종료=true)
{
....
...생략..메인 매크로..정상작동함
}
}
return
event()
{
if(Search_img("Image\home\제발서치.bmp",Nox,x,y,0,0,0,0,50,0x000000))
{
}
if(Search_img("Image\home\제발서치2.bmp",Nox,x,y,0,0,0,0,50,0x000000))
{
}
if(Search_img("Image\home\제발서치3.bmp",Nox,x,y,0,0,0,0,50,0x000000))
{
}
}
return
event2()
{
if(Search_img("Image\home\제발서치4.bmp",Nox,x,y,0,0,0,0,50,0x000000))
{
}
}
return
앞에 문제 아직 못 풀었는데요...팅김현상은 괜찮아졌고..
셋타임 명령어가 문제인데요...사용하지를 못하네요.
위 처럼 셋타임 함수만 넣으면 이미지가 없는데도 서치성공했다고 뜹니다. 꼭파일이 없는것처럼...
메인함수 스크립트는 정상작동을 하구요.. 셋타임 함수가 돌기시작하면 서치가 지멋대로 되네요..
LD앱플레이어의 고질적인 문제인지 모르겠네요.;; 다른분은 LD앱플레이어에서 잘되시는지..?
셋타이머의 동작 방식을.. 아시겠지만 정해진 시간이 되면 현재 실행중인 코드를 중단하고 셋타이머 스크립트가 인터럽트하여 수행한 뒤 Return을 만나면 다시 원 스크립트로 복귀합니다.
Search_img라는 함수로 이미지써치를 구현하고 계신듯한데 궁금한것이
global 명령어나 byref 참조변수를 사용하여 함수 내/외에서 공유하고 있는 변수가 있는지요?
이 경우 메인스크립트에서 Search_img함수가 동작 도중 셋타이머가 들어오면 셋타이머의 Search_img함수가 실행되면서 메인스크립트에서 정의되고 있는 변수들에 영향을 줄 가능성이 있을 것 같습니다.
아래 코드 돌려보시면 이해가 가실겁니다
메인함수에서도 Add함수를 실행하고 셋타이머에서도 Add함수를 실행했을때
Add함수안에서 일어나는 일들이 셋타이머에 의해 영향을 받는것을 보실 수 있을겁니다.
SetTimer, SetTimerFunction, 5000
Main()
Return
Main()
{
global A, B, C
Loop
{
Add(1,5)
tooltip, % "함수=ADD`nA_Index=" A_Index "`nA=" A "`nB=" B "`nC=" C,100,200,1
sleep, 1000
}
}
Add(더하기,반복)
{
global A,B,C
loop, % 반복
{
A := !A ? 1 : A+더하기
B := !B ? 1 : B+더하기
C := !C ? 1 : C+더하기
tooltip, % "함수=ADD`n더하기=" 더하기 "`nA_Index=" A_Index "`nA=" A "`nB=" B "`nC=" C,200,200,2
sleep,1000
}
}
SetTimerFunction()
{
Add(-3,1)
}
F1::
ExitApp