WaitColor(x:="~",y:="~",Color:="0XFFFFFF",Sleeptime:=50,outtime:=0,show:=1) {
/*------------------------------------------------
; 循环等待屏幕坐标点的颜色出现或消失的就执行鼠标点击
参数:
x => 坐标点X,也可以是X的范围,如:"100~200",还可以是缺省值~ 0~A_ScreenWidth
y => 坐标点Y,同X用法,
Color => 要查找的颜色,可以是多色,如:"0xFF0000|0xFFFFFF"
sleeptime => 找色循环的时间间隔,类似于SetTimer的间隔参数,大于0时为间隔,等于0时为运行1次0ms退出,小于0时为运行1次后延时负值ms退出
outtime => 循环找色的延时时间,类似 KeyWait 函数的T 参数,0为无限循环,正数为ms后退出循环
show => 这是一个用于反转找色参数,等于1时,为循环等待颜色出现,点击鼠标退出;等于0时,为循环等待颜色消失,没有点击动作退出
返回:0,假 1,真
; 示例用法
判断单个坐标点,可多颜色,出现
WaitColor(100, 200, 0xFF0000) ; 循环等待坐标点(100, 200)的颜色为红色,找到点击该点
WaitColor(100, 200, "0xFF0000|0xFFFFFF") ; 循环等待坐标点(100, 200) 的颜色为红色或白色,找到点击该点
判断一个范围,可多颜色,出现
WaitColor(100, 300~400, "0xFF0000|0xFFFFFF") ;循环等待(100,300) 到 (100,400) 两点区域中出现 颜色0xFF0000或0xFFFFFF,找到点击退出
WaitColor(100~200, 300~400, 0xFF0000) ;循环等待(100,300) 到 (200,400) 两点区域中出现 颜色0xFF0000,找到点击退出
颜色消失执行退出
WaitColor(100, 200, 0xFF0000,,,0) ;循环等待坐标点(100,200)的红颜色 消失,退出
*/ ;--------------------------------------------
out:=A_TickCount+outtime,find:=0
if IsInteger(color)
Color:=format("0X{:x}",Color)
while (A_PriorKey != "RButton") and (outtime=0?"ture":(A_TickCount<out))
{
if RegExMatch(x . y, "([~_&<>\.\|])")
{
x1:=RegExMatch(x, "(^\d+)", &xr)?xr[1]:x~=">"?A_ScreenWidth:0
x2:=RegExMatch(x, "(\d+$)", &xr)?xr[1]:x~=">"?0:A_ScreenWidth
y1:=RegExMatch(y, "(^\d+)", &yr)?yr[1]:y~=">"?A_ScreenHeight:0
y2:=RegExMatch(y, "(\d+$)", &yr)?yr[1]:y~=">"?0:A_ScreenHeight
Loop Parse, Color, "-~|&_."
{
find:=PixelSearch(&Cx, &Cy, x1, y1, x2, y2,A_LoopField)
if show and find
{
Click(Cx,Cy)
return {x:cx,y:cy}
}
if !show and !find
return 0
}
} else {
find:=InStr(Color,PixelGetColor(x,y)),Cx:=x,Cy:=y
if show and find
{
Click(Cx,Cy)
return {x:cx,y:cy}
}
if !show and !find
return 0
}
Sleep(Abs(Sleeptime))
if Sleeptime<=0
return 0
}
}
暂无讨论,说说你的看法吧