항상 질문만 하는 민서아빠입니다.
질문해가며 하나하나 만들어 가는중인데요
이번엔 비활성을 파보려하는데요 모바게님 소스로 해보려고 하는데
복사해서 실행해 보니?
스샷같은 에러가 나오는데 왜그런건가요?
그냥 복사만해서 실행해봤습니다.?
그리고 아래 에서?test.bmp이미지만 아무곳에 저장해두면 되는건지도 궁금합니다. ?
=========================================================================================
CoordMode, Pixel, Screen
?
CoordMode, ToolTip, Screen
?
SysGet, WindowCaptionHeight, 4 ; 캡션Height
?
SysGet, WindowBorderWidth, 32 ; 보더Width
?
SysGet, WindowBorderHeight, 33 ; 보더Height
?
; 이미지 서치
?
; seconds : 시간 지정 (기본설정상 1초 = 10번 시도, 0.5초 = 5번 시도함)
?
; imgX, imgY : 리턴받기 위해 사용
?
; fromX , fromY , toX , toY : 이미지 서치 범위 지정
?
; 리턴값 : 1 = 이미지 찾음 , 0 = 이미지 못찾음, -1 = 이미지 파일 없음
?
CheckImage(img, seconds=0, ByRef imgX="", ByRef imgY="", fromX=0, fromY=0, toX=0, toY=0) {
?
? ? global ActiveID, DebugMode
?
? ? Sleep, 10
?
? ? If ( ActiveID)
?
? ? ? ? WinGetPos, winX, winY, winW, winH, % ActiveID
?
? ? Else
?
? ? ? ? winX := 0, winY := 0, winW := A_ScreenWidth, winH := A_ScreenHeight
?
? ? sleepTime := 100
?
? ? times := seconds * (1000 / sleepTime)
?
? ? If ( times=0)
?
? ? ? ? times := 1
?
? ? x := winX, y := winY, w := winX+winW, h := winY+winH
?
? ? If (fromX && fromY && toX && toY)
?
? ? {
?
? ? ? ? w := x+toX, h := y+toY, x := x+fromX, y := y+fromY
?
? ? ? ? If ( DebugMode = 1)
?
? ? ? ? {
?
? ? ? ? ? ? ToolTip, 범위시작, x, y, 11
?
? ? ? ? ? ? ToolTip, 범위끝, w, h, 12
?
? ? ? ? }
?
? ? }
?
? ? Loop, %times%
?
? ? {
?
? ? ? ? ImageSearch, oX, oY, x, y, w, h, *50 %A_ScriptDir%\%img%
?
? ? ? ? If ( ErrorLevel = 0)
?
? ? ? ? {
?
? ? ? ? ? ? imgX := oX
?
? ? ? ? ? ? imgY := oY
?
? ? ? ? ? ? If ( DebugMode = 1)
?
? ? ? ? ? ? {
?
? ? ? ? ? ? ? ? ToolTip, %img%, imgX, imgY, 10
?
? ? ? ? ? ? }
?
? ? ? ? ? ? Return 1
?
? ? ? ? }
?
? ? ? ? Else If ( ErrorLevel = 2)
?
? ? ? ? {
?
? ? ? ? ? ? MsgBox, , , 이미지 없음 : %img% , 1
?
? ? ? ? ? ? Return -1
?
? ? ? ? }
?
? ? ? ? Sleep, %sleepTime%
?
? ? }
?
? ? Return 0
?
}
?
; 비활성 이미지 클릭
?
; seconds : 시간 지정 (CheckImage 설정에 따름)
?
; fromX , fromY , toX , toY : 이미지 서치 범위 지정
?
; 리턴값 : 1 = 이미지 찾음 , 0 = 이미지 못찾음, -1 = 이미지 파일 없음
?
ClickImage(img, seconds=0, fromX=0, fromY=0, toX=0, toY=0) {
?
? ? Sleep, 10
?
? ? result := CheckImage( img, seconds, x, y, fromX, fromY, toX, toY)
?
? ? If (result = 1)
?
? ? {
?
? ? ? ? global ActiveID, DebugMode, WindowCaptionHeight, WindowBorderWidth, WindowBorderHeight
?
? ? ? ? WinGetPos, winX, winY, winW, winH, % ActiveID
?
? ? ? ? px:=x-winX-WindowBorderWidth
?
? ? ? ? py:=y-winY-WindowBorderHeight-WindowCaptionHeight
?
? ? ? ? p := px|py<<16
?
? ? ? ? If ( DebugMode = 1)
?
? ? ? ? {
?
? ? ? ? ? ? ToolTip, 이미지 클릭 %img%, x, y, 10
?
? ? ? ? }
?
? ? ? ? PostMessage, 0x201, 0, %p%, , % ActiveID
?
? ? ? ? PostMessage, 0x202, 0, %p%, , % ActiveID
?
? ? }
?
? ? Sleep, 200
?
? ? Return result
?
}
?
; 비활성 좌표 클릭
?
; x, y 좌표를 클릭
?
ClickPosition(x, y) {
?
? ? global ActiveID, DebugMode, WindowCaptionHeight, WindowBorderWidth, WindowBorderHeight
?
? ? Sleep, 10
?
? ? px:=x-WindowBorderWidth/2
?
? ? py:=y-WindowBorderHeight/2-WindowCaptionHeight
?
? ? p := px|py<<16
?
? ? PostMessage, 0x201, 0, %p%, , % ActiveID
?
? ? PostMessage, 0x202, 0, %p%, , % ActiveID
?
? ? If ( DebugMode = 1)
?
? ? {
?
? ? ? ? WinGetPos, winX, winY, winW, winH, % ActiveID
?
? ? ? ? ToolTip, 좌표클릭, winX+px, winY+py, 10
?
? ? }
?
? ? Sleep, 200
?
? ? Return 1
?
}
?
; 비활성 마우스 드래그
?
; (fromX, fromY) 좌표에서 (toX, toY) 로 드래그함
?
MouseDrag(fromX, fromY, toX, toY) {
?
? ? global ActiveID, DebugMode, WindowCaptionHeight, WindowBorderWidth, WindowBorderHeight
?
? ? Sleep, 10
?
? ? px1 := fromX-WindowBorderWidth/2
?
? ? py1 := fromY-WindowBorderHeight/2-WindowCaptionHeight
?
? ? p1 := px1|py1<<16
?
? ? px2 := toX-WindowBorderWidth/2
?
? ? py2 := toY-WindowBorderHeight/2-WindowCaptionHeight
?
? ? p2 := px2|py2<<16
?
? ? PostMessage, 0x201, 0, %p1%, , % ActiveID
?
? ? PostMessage, 0x200, 0, %p2%, , % ActiveID
?
? ? PostMessage, 0x202, 0, %p2%, , % ActiveID
?
? ? If ( DebugMode = 1)
?
? ? {
?
? ? ? ? WinGetPos, winX, winY, winW, winH, % ActiveID
?
? ? ? ? ToolTip, 드래그시작, winX+px1, winY+py1, 11
?
? ? ? ? ToolTip, 드래그종료, winX+px2, winY+py2, 12
?
? ? }
?
? ? Sleep, 200
?
? ? Return 1
?
}
?
#NoEnv ?; Recommended for performance and compatibility with future AutoHotkey releases.
?
#SingleInstance, force
?
SendMode Input ?; Recommended for new scripts due to its superior speed and reliability.
?
SetWorkingDir %A_ScriptDir% ?; Ensures a consistent starting directory.
?
SetBatchLines,-1
?
ListLines, Off
?
ActiveID := "BlueStacks App Player"
?
DebugMode := 1
?
Gui, Add, Button, gTestSearch, 이미지 서치
?
Gui, Add, Button, gTestSearch2, 이미지 범위 서치
?
Gui, Add, Button, gTestSearch3, 이미지 시간지정 서치
?
Gui, Add, Button, gTestClick, 이미지 클릭
?
Gui, Add, Button, gTestDrag, 드래그
?
Gui, Add, Button, gRestart, 재시작
?
Gui, Show, , 테스트
?
Return
?
GuiClose:
?
ExitApp
?
Return
?
TestSearch:
?
; 기본 서치
?
MsgBox, % CheckImage( "test.bmp")
?
Return
?
TestSearch2:
?
; 범위 서치
?
MsgBox, % CheckImage( "test.bmp", , , , 10, 10, 300, 300)
?
Return
?
TestSearch3:
?
; 3초동안 찾음
?
MsgBox, % CheckImage( "test.bmp", 3)
?
Return
?
TestClick:
?
; 기본 클릭 테스트
?
MsgBox, % ClickImage( "test.bmp")
?
Return
?
TestDrag:
?
; 드래그 테스트
MouseDrag(100, 100, 200, 200)
Return
Restart:
?
Reload
?
Return
하시기전에 우선 함수 를 좀 아셔야합니다..
함수는 보통
함수명
함수내용 이렇게 이루어져있습니다..
그리고 함수를 사용할때는. 함수제못만 가지고와서 사용하시면 됩니다.. 함수내용은 아무대나 편한데 붙혀넣으시구요.. 매크로 본문에는 함수제목만쓰시면 됩니다..
그리고 비활성 을 하시기위해선. 타이틀 도 설정하셔야합니다.. 그래야 포스메세지로 .창에 직접 명령어를 전달하실수있으니까요 ..핸드폰이라 또 예문을 못적어드리네요 ..이따 컴터잡으면 예문하나적어드리겠습니다