요즘 열심히 오토핫키 배우고 있습니다.~!
몇일 구글링 검색을 아무리 해도 해결이 안되서 글남겨요
원하는 작업바탕이 거의 다되어 가서 전체스크립트를 테스트를 하고 있습니다.
테스트는 LD앱 이고 멀티 4개를 돌릴려고 하는데요.
컴파일전 편집에서 한개의 스크립트로 테스트 할때는 문제 없이 잘돌아가는데
컴파일후 카카오토 처럼 각폴더 4개씩 복사해서 실행하면 처음에는 잘되다가 시간이 지나면
(2시간 내외)핫키가 하나씩 팅기고..결국 핫키가 하나만? 남아서 돌고 있어요..
의심되는구간은 10간격으로 멈춤확인하는 셋타이머 와 돌발창 확인을 위한 2초간격셋타이머~
while 및 loop 에 의한 과부화??? 정도 인데..
멀티 실행을 하기위한 명령어가 따로 있는지...궁금하네요...단순히 스크립트 잘못짠건지..
컴은 3950x 64램이라 사양은 괜찮아요
; #SingleInstance force ;프로세스가 하나만 실행되도록 보장
; #SingleInstance off
위 명령어도 아닌것 같아요.;
밑에 구도로 구현했어요...gui 및 함수 내용은 뺐구요.
========================================================================
#NoEnv
; #SingleInstance force ;프로세스가 하나만 실행되도록 보장
#SingleInstance Off
#Persistent
#Include, Gdip_all.ahk
#Include, Gdip_ImageSearch.ahk
#Include, Search_img.ahk
gui ~~~샤바샤뱌...
.
.
지유아이 쇼~
;==============================================
Button시작:
{
SetTimer, 앱체크함수 ,10000
SetTimer, 이벤트함수 ,2000
종료 := true
while(종료 = true) ;위치확인
{
위치확인()
PostClick(575,145) ; 지도클릭
Sleep, 1000
break
}
내용 := "초기위치 찾기 시작"
FormatTime, 현재시간, , MM.dd HH:mm:ss
LV_Insert(1, "", 현재시간, 내용)
log_up(내용)
while(종료 = true) ;초기위치저장
{
WinGet, Nox, ID, %타이틀%
Gui, Submit, NoHide
if(Search_img("Image\초기위치1.bmp",Nox,x,y,375,75,640,340,50,0x000000))
{
초기x := x + 6
초기y := y + 10
Sleep, 1000
PostClick(630,50) 나가기
Sleep, 1000
break
}
}
자동확인()
줌인아웃()
goto, Main
}
return
;=================================================================================
Main:
{
WinGet, Nox, ID, %타이틀%
Gui, Submit, NoHide
while(종료 = true)
{
Sleep, 1000
if(Search_img("Image\event\공헌도.bmp",Nox,x,y,0,0,220,60,50,0x000000)) && (종료 = true)
{
PostClick(x,y)
Sleep, 500
}
if(Search_img("Image\무게1.bmp",Nox,x,y,550,0,605,70,50,0x000000)) && (종료 = true)
{
분해특화()
판매진입++
}
if(Search_img("Image\event\공헌도1.bmp",Nox,x,y,250,200,400,300,50,0x000000))
{
PostClick(x,y)
Sleep, 500
}
while(조건 > 2) && (종료 = true) ;판매
{
}
위치확인()
}
내용 := "매크로 종료됨"
FormatTime, 현재시간, , MM.dd HH:mm:ss
LV_Insert(1, "", 현재시간, 내용)
log_up(내용)
}
return
Button일시정지:
{
Gui, Submit, NoHide
if(일시정지_f)
{
GuiControl, Enable, End
GuiControl, , Stop, 일시정지
SetTimer, 앱체크함수, On
SetTimer, 이벤트함수, On
내용 := "다시재생"
FormatTime, 현재시간, , MM.dd HH:mm:ss
LV_Insert(1, "", 현재시간, 내용)
log_up(내용)
Pause, Off
}
else
{
GuiControl, Disable, End
GuiControl, , Stop, 다시재생
SetTimer, 앱체크함수, Off
SetTimer, 이벤트함수, Off
내용 := "일시정지"
FormatTime, 현재시간, , MM.dd HH:mm:ss
LV_Insert(1, "", 현재시간, 내용)
log_up(내용)
Pause, On, 1
}
일시정지_f := !일시정지_f
}
return
Button종료:
{
종료 := false
SetTimer, 앱체크함수, Off
SetTimer, 이벤트함수, Off
내용 := "매크로 종료중...."
FormatTime, 현재시간, , MM.dd HH:mm:ss
LV_Insert(1, "", 현재시간, 내용)
log_up(내용)
}
return
GuiClose:
{
ExitApp
}
return
;============================================================================
필수설정:
PostClick(FoundX,FoundY)
비활성드래그(x시작, y시작, x끝, y끝, 드래그횟수, 이동간격, 처리간격)
log_up(msg)
CaptureSquare(filename, sX = 0, sY = 0, eX = 0, eY = 0) ;캡쳐
위치확인()
자동확인()
분해특화()
메뉴클릭()
판매()
지도클릭ON()
재료보관()
지도클릭off()
이벤트함수:
재부팅:
cpu와 memory 허용범위라면 멀티는 많이 할수 있죠
while(조건 > 2) && (종료 = true) ;판매
{
}
여기 내용이 없다면 조건충족시 과부하가 발생하므로 멈출 가능성이 있습니다.
위의 코드만으로는 그 외에는 못찼겠네요
return이 잘 되게 코딩하면 멈추지 않습니다