녹스 플레이어 이름을 NoxFirst로 변경후
매크로를 동작시키려고 하는데 활성상태에서는 이미지 서칭이 되는데
비활성상태에서는 이미지 서칭이 안됩니다.
코드는 아래와 같습니다.
코드상에 문제 있는거 확인좀 부탁드려요 ㅠ_ㅠ
=======================================
#singleinstance off
SetBatchLines,-1 ; 라인간 딜레이를 없애서 속도 상승
coordmode, pixel, screen
SetWorkingDir %A_ScriptDir%
SetTitleMatchMode, 2
ActiveID:="NoxFirst"
IfWinExist, NoxFirst
WinActivate, %ActiveID%
WinGetPos, winX, winY, winW, winH, %ActiveID%
DebugMode := 1
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
X2:=X+W
Y2:=Y+H
return
;; Nox
F1::
gui, submit, nohide
wingettitle, title, NoxFirst
msgbox,,,%ActiveID%
Loop
{
if(imageSearcher(x,y, "image\bag.bmp")=1 or imagesearcher(x,y, "image\finish.bmp")=1)
{
msgbox,,,successs
sleep,1000
;; finish button
okbtn:=303|337<<16
Postmessage,0x201,1,%okbtn%,, NoxFirst
PostMessage,0x202,0,%okbtn%,, NoxFirst
Sleep,1000
;; loop mode button
lmb:=489|397<<16
PostMessage,0x201,1,%lmb%,, NoxFirst
PostMessage,0x202,0,%lmb%,, NoxFirst
Sleep, 1000
;; fast mode
fastbtn:=187|313<<16
PostMessage,0x201,1,%fastbtn%,, NoxFirst
PostMessage,0x202,0,%fastbtn%,, NoxFirst
Sleep, 1000
enterbtn:=247|382<<16
PostMessage,0x201,1,%enterbtn%,, NoxFirst
PostMessage,0x202,0,%enterbtn%,, NoxFirst
Sleep, 1000
enterbtn2:=303|374<<16
PostMessage,0x201,1,%enterbtn2%,, NoxFirst
PostMessage,0x202,0,%enterbtn2%,, NoxFirst
Sleep, 1000
Sleep, 15000
}
else
{
msgbox,,,fail
Sleep, 15000
}
}
return
;imagesearch
;이미지 서치
imageSearcher( ByRef imgX, ByRef imgY, img)
{
global ActiveID
WinGetPos, winX, winY, winW, winH, %ActiveID%
ImageSearch, oX, oY, winX, winY, winX+winW, winY+winH, *50 %A_ScriptDir%\%img%
If ( ErrorLevel = 0)
{
imgX := oX
imgY := oY
return 1
}
else If ( ErrorLevel = 1){
return 0
}
}
;서치앤클릭
imageSearchClick(img)
{
If imageSearcher( x, y, img) = 1
{
sendClick( x, y)
Return 1
}
Return 0
}
;클릭
sendClick( x, y) {
global ActiveID
WinGetPos, winX, winY, winW, winH, %ActiveID%
px:=x
py:=y
p := px|py<<16
PostMessage, 0x201, 1, %p%, , %ActiveID%
sleep, 100
PostMessage, 0x202, 0, %p%, , %ActiveID%
Sleep, 200
Return
}
sendClick2( x, y)
{
global ActiveID
px:=x
py:=y
p := px|py<<16
PostMessage, 0x201, 1, %p%, , %ActiveID%
sleep, 100
PostMessage, 0x202, 0, %p%, , %ActiveID%
Sleep, 200
Return
}
;이미지 찾을때까지 대기
waitImage(img) {
Loop {
If imageSearcher( x, y,img) = 1
{
Break
}
Sleep, 500
}
Sleep, 200
Return
}
;이미지 찾을때까지 대기후 클릭
waitImageClick(img) {
Loop {
If imageSearchClick(img) = 1
{
Break
}
Sleep, 500
}
Sleep, 200
Return
}
ImageSearch 함수로는 녹스 화면이 가려져 있는 상태에서 이미지 검색이 안됩니다
녹스 플레이어를 최소화하거나 다른 창 아래에 두었을 때에도 매크로가 작동되게 만드시려고 하는 것 같은데
gdip나 adb를 활용한 다른 방식으로 접근하셔야 합니다