ボタンなどの画像を見つけてクリックする AutoHotkey
AutoHotkey v2.0
キーボードのホットキーをカスタマイズするソフトです。自動化などいろいろなことができます。AutoHotkey v2.0にバージョンアップしたのでこちらを使います
私はZIPを使います
https://www.autohotkey.com/download/
SciTE4AutoHotkey 編集から実行までできる環境です
https://www.autohotkey.com/scite4ahk/
解凍したフォルダーのAutoHotkey64.exeをコピーして名前をAutoHotkey.exeに変更します
簡単なスクリプトの例
loop
{
Clickimage(".\images\a.bmp",10,10,,500)
sleep 1000
}
Persistent
Clickimage(img,posdx:=0,posdy:=0, noclick:="noclick",waittime:=0, noreturn:="noreturn",ambiguity:=30){
wd := A_WorkingDir
SetWorkingDir A_ScriptDir
ret := False
if FileExist(img)
{
if ImageSearch(&FoundX, &FoundY, 0, 0, A_ScreenWidth, A_ScreenHeight, "*" ambiguity " " img)
{
MouseGetPos &mouseX, &mouseY, &id, &control
MouseMove FoundX+posdx, FoundY+posdy, 100
ToolTip "X:" FoundX " Y:" FoundY,FoundX,FoundY
if not (noclick = "noclick")
MouseClick noclick,,,,
ret := True
sleep waittime
ToolTip
; if !noreturn
if not (noreturn = "noreturn")
MouseMove mouseX, mouseY, 0
}
else
ret := False
}
SetWorkingDir wd
sleep 500
return ret
}
スクリプト
imagesホルダーに決まった形式のファイル名でイメージファイルを置くとパラメーターを指定して動かすことができます。画像の見つかった場所から右にDX 下ににDYずらします。左クリックするかクリックしないかを指定できます。クリックした後の待ち時間を1000ミリ秒で指定します。元の場所にカーソルを戻すか戻さないかを指定します。色の曖昧さを指定します。調べる場所を指定します。キーを押します。
img_posdx_posdy_ noclick_waittime_noreturn_ambiguity_gravity_key.bmp
g.bmp
gx_10_10_noclick_100_return_30_southeast.bmp
t_10_10_left_100_noreturn_30 #north_{End}.bmp
Pauseキーで一時停止再開をします 見つかったらビープ音を鳴らします。
global eflg := false
global eflg := true
ecnt := 0
ecnt2 := 0
imagesfld := "images"
Arr := ["img",10,10, "left",100, "return",30,"fullscreen",""]
;
Itemnull :=
Item := Array()
loop
{
if eflg
{
MouseGetPos &mouseXa, &mouseYa
mouseXb := mouseXa
mouseYb := mouseYa
sleep 3000
MouseGetPos &mouseXa, &mouseYa
if mouseXb = mouseXa and mouseYb = mouseYa
{
if ecnt = 0
{
; ecnt++
; Clickimage(".\images\a.bmp",10,10,,500)
Loop Files, A_ScriptDir "\" imagesfld "\*.*"
{
fileItem := StrSplit(A_LoopFileName, ".")
Item := StrSplit(fileItem[1], "_")
Loop 9- Item.Length
Item.Push Itemnull
; a_10_10_left_500_return_30_southwest_{End}.bmp
Loop 9
{
if Item[A_Index] = Itemnull
Item[A_Index] := Arr[A_Index]
;MsgBox A_LoopFileFullPath Item[2] Item[3] Item[4] Item[5] Item[6] Item[7] , ,"T57"
}
; if Clickimage(A_LoopFileFullPath,10,10,"left",500,"return") = true
if Clickimage(A_LoopFileFullPath ,Item[2]*1,Item[3]*1,Item[4],Abs(Item[5]),Item[6],Abs(Item[7]),Item[8]) = true
{
ecnt2++
if not (Item[9] = "" or Item[9] =Itemnull)
{
; MsgBox Item[9] , ,"T5"
send Item[9]
}
}
}
}
ecnt++
}
else
{
ecnt := 0
}
}
sleep 1000
}
Persistent
Pause::
{
global eflg
if eflg
MsgBox "clickimage is not active.", ,"T5"
else
MsgBox "clickimage is active.", ,"T5"
eflg := !eflg
}
Clickimage(img,posdx:=0,posdy:=0, noclick:="noclick",waittime:=0, noreturn:="noreturn",ambiguity:=30,gravity:="fullscreen"){
wd := A_WorkingDir
SetWorkingDir A_ScriptDir
ret := False
b1x := 1
b1y := 1
If InStr(gravity, "north")
b1y--
If InStr(gravity, "south")
b1y++
If InStr(gravity, "west")
b1x--
If InStr(gravity, "east")
b1x++
If InStr(gravity, "#north")
b1y+=0.5
If InStr(gravity, "#south")
b1y-=0.5
If InStr(gravity, "#west")
b1x+=0.5
If InStr(gravity, "#east")
b1x-=0.5
if (gravity = "fullscreen")
{
bx := 0
by := 0
bw := A_ScreenWidth
bh := A_ScreenHeight
}
else
{
bx := Round(A_ScreenWidth*b1x/3)
by := Round(A_ScreenHeight*b1y/3)
bw := Round(A_ScreenWidth/3)+bx
bh := Round(A_ScreenHeight/3)+by
}
;
; MsgBox bx " " by " " bw " " bh gravity, ,"T55"
if FileExist(img)
{
if ImageSearch(&FoundX, &FoundY, bx, by, bw, bh, "*" ambiguity " " img)
{
SoundBeep
MouseGetPos &mouseX, &mouseY, &id, &control
MouseMove FoundX+posdx, FoundY+posdy, 100
ToolTip "X:" FoundX " Y:" FoundY,FoundX,FoundY
if not (noclick = "noclick")
MouseClick noclick,,,,
ret := True
sleep waittime
ToolTip
; if !noreturn
if not (noreturn = "noreturn")
MouseMove mouseX, mouseY, 0
}
else
ret := False
}
SetWorkingDir wd
sleep 200
return ret
}
スクリーンショットの方法
例えばscreenpresso
ディスカッション
コメント一覧
まだ、コメントがありません