原理:通过识图实现 当屏幕出现该图片时 表示该动作完成
需要修改array1里面的图片位置 + 自己要执行的操作
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
;用于存放图片 用于记录每个步骤会产生的新的图片 表示这一步骤完成
Array1 := ["F:\yxc_Code\一些没用的脚本\自动识别图片_autohotkey\input.png","F:\yxc_Code\一些没用的脚本\自动识别图片_autohotkey\select.png"]
F3::
ii := 1
breaktime := 1 ;用于超时退出的
MouseGetPos, NowX, NowY ;记录鼠标的原始位置
while(ii <= Array1.Length())
{
SysGet, VirtualWidth, 78 ; 虚拟屏幕的宽度和高度, 单位为像素. 虚拟屏幕是所有监视器的边框
SysGet, VirtualHeight, 79 ; 度量是虚拟屏幕左上角的坐标
__ImageFilePath:= Array1[ii] ;获取图片
Gui,add,picture,hwnd__mypic,%__ImageFilePath%
if FileExist(__ImageFilePath){
;------↓↓↓↓↓↓↓↓↓-------你想要执行的动作---可以根据指定的需要进行修改--↓↓↓↓↓↓↓↓↓↓↓------
ControlGetPos,,,__img_w,__img_h,,ahk_id %__mypic%
CoordMode Pixel
ImageSearch, __FoundX, __FoundY, 0, 0, VirtualWidth, VirtualHeight,%__ImageFilePath%
CoordMode Mouse
PicX:=__FoundX + __img_w/2 ;图片的中心位置坐标
PicY:=__FoundY + __img_h/2
if (ErrorLevel=0) {
CoordMode, Mouse , Screen
__ClickX:=PicX
__ClickY:=PicY
__ClickTimes:=1
Click %__ClickX%, %__ClickY%, %__ClickTimes%
;------↑↑↑↑↑↑↑↑↑↑↑↑↑↑-------你想要执行的动作---可以根据指定的需要进行修改----↑↑↑↑↑↑↑↑↑↑----
ii := ii + 1
}
else { ;没从屏幕中找到该图片
Sleep 100
breaktime := breaktime + 1
if (breaktime == 20) ;最长等待时间为 20 * 100 = 2s
{
ToolTip, 操作失败....
Sleep 1000
ToolTip
break
}
}
}
else
{
; 设置的图片路径没找到 这是你存放 Array1的内容
MsgBox "图片路径设置不对。。。"
}
}
;-----↓↓↓↓↓↓↓↓↓↓↓----这段代码可以不要-----
if (ii == Array1.Length() + 1) ;上述操作完成后 返回鼠标的原始位置
{
CoordMode, Mouse , Screen
__ClickX:=NowX
__ClickY:=NowY
__ClickTimes:=0
Click %__ClickX%, %__ClickY%, %__ClickTimes%
}
;-----↑↑↑↑↑↑↑↑↑↑↑↑----这段代码可以不要-----
return
是一个不错的思路
图片正文中也要放一下,上面那个只是缩略图