waitcolor()一个等待界面出现,点击按键的函数

许多实用脚本和封装函数, 可以让您编写脚本更加便捷高效

Moderators: tmplinshi, arcticir

Post Reply
Ghost_jack_00
Posts: 5
Joined: 28 Jun 2023, 01:01

waitcolor()一个等待界面出现,点击按键的函数

Post by Ghost_jack_00 » 21 May 2024, 08:27

一个循环等待界面出现,点击按键的函数

Code: Select all


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
	}
}


Post Reply

Return to “脚本函数”