颜色判断为什么不行?

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: arcticir, tmplinshi

jsjcjsjc
Posts: 12
Joined: 25 May 2019, 03:11

颜色判断为什么不行?

02 Oct 2019, 07:59

我的思路是这样的:先获取724,310的颜色,按F8执行,然后Gosub到color.每隔一秒PixelGetColor坐标724,310的颜色,如果颜色一样就等待,颜色不一样了就回到主程序
但是测试了一下貌似没有效果啊...求分析
感谢

========================================================
....主程序....
PixelGetColor,color-before,724,310,RGB
Sleep, 200
Send, {F8}
Sleep, 5000
Gosub, color
Sleep, 1000
....主程序....


color:
loop
{
PixelGetColor,color-after,724,310,RGB
if (color-before = color-after)
{
sleep,1000
Continue
; 如果724,310的颜色一样就等1秒
}
else
{
break
; 如果724,310的颜色不一样,就返回主程序
}
}
return
tmplinshi
Posts: 1519
Joined: 01 Oct 2013, 14:57

Re: 颜色判断为什么不行?

02 Oct 2019, 10:59

你是发帖的时候替换掉了部分变量名吗?否则的话第一行就会导致脚本出错

Image

这个错误提示是说“变量名 color-before 含有非法字符”。点击【确定】脚本就退出了,不会继续往下执行了。
jsjcjsjc
Posts: 12
Joined: 25 May 2019, 03:11

Re: 颜色判断为什么不行?

03 Oct 2019, 07:58

tmplinshi wrote:
02 Oct 2019, 10:59
你是发帖的时候替换掉了部分变量名吗?否则的话第一行就会导致脚本出错

Image Broken Link for safety

这个错误提示是说“变量名 color-before 含有非法字符”。点击【确定】脚本就退出了,不会继续往下执行了。
感谢,全部改成color_before貌似真的可以了
Guest

Re: 颜色判断为什么不行?

04 Oct 2019, 06:00

tmplinshi wrote:
02 Oct 2019, 10:59
你是发帖的时候替换掉了部分变量名吗?否则的话第一行就会导致脚本出错

这个错误提示是说“变量名 color-before 含有非法字符”。点击【确定】脚本就退出了,不会继续往下执行了。
但是发现另外一个问题,这段代码第一次运行没有问题,等待颜色变化的时候会MsgBox出我要的信息,但是点击确定后,屏幕保持不变会不断跳出MsgBox。。。
这是为什么?
感谢

Code: Select all

loop
{
PixelGetColor,color_before,724,310,RGB
Sleep, 2000
Gosub, color
MsgBox, 
(
color_before, %color_before%
color_after, %color_after%
)
}


color:
loop
{
PixelGetColor,color_after,724,310,RGB
if (color_before = color_after)
{
sleep,1000
Continue
}
else
{
break
}
}
return
tmplinshi
Posts: 1519
Joined: 01 Oct 2013, 14:57

Re: 颜色判断为什么不行?

04 Oct 2019, 07:09

可能跟当前激活的窗口有关。默认情况下,PixelGetColor 的 x y 坐标是相对于当前窗口的,可以通过 CoordMode 命令修改成相对于屏幕。

这种情况下可能用函数好一点。

Code: Select all

Loop
{
	WaitColorChange(724, 310, color_before, color_after)
	MsgBox, 
	(LTrim
		color_before: %color_before%
		color_after: %color_after%
	)
	Sleep, 100
}

WaitColorChange(x, y, ByRef color1 := "", ByRef color2 := "") {
	PixelGetColor, color1, x, y, RGB
	Loop {
		Sleep, 1000
		PixelGetColor, color2, x, y, RGB
	} Until (color1 != color2)
}
jsjcjsjc
Posts: 12
Joined: 25 May 2019, 03:11

Re: 颜色判断为什么不行?

04 Oct 2019, 07:53

tmplinshi wrote:
04 Oct 2019, 07:09
可能跟当前激活的窗口有关。默认情况下,PixelGetColor 的 x y 坐标是相对于当前窗口的,可以通过 CoordMode 命令修改成相对于屏幕。

这种情况下可能用函数好一点。

Code: Select all

Loop
{
	WaitColorChange(724, 310, color_before, color_after)
	MsgBox, 
	(LTrim
		color_before: %color_before%
		color_after: %color_after%
	)
	Sleep, 100
}

WaitColorChange(x, y, ByRef color1 := "", ByRef color2 := "") {
	PixelGetColor, color1, x, y, RGB
	Loop {
		Sleep, 1000
		PixelGetColor, color2, x, y, RGB
	} Until (color1 != color2)
}
太感谢了,我尝试了CoordMode, Pixel, Screen,但是还是不行。。。。
关键我看逻辑没问题啊。第一次loop也没有问题,以后的loop不管变没变就一直提示颜色变化。。。

这是代码

Code: Select all

CoordMode, ToolTip, Screen
CoordMode, Pixel, Screen
CoordMode, Mouse, Screen
CoordMode, Caret, Screen
CoordMode, Menu, Screen

loop
	{
	PixelGetColor,color_before,724,310,RGB
	Sleep, 2000
	Gosub, color
	MsgBox, color_before= %color_before%. color_after= %color_after%
	}


color:
	{
		loop
		{
				PixelGetColor,color_after,724,310,RGB
				if (color_before = color_after)
			{
				sleep,1000
				Continue
			}
				else
			{
				break
			}
		}
	}
return
jsjcjsjc
Posts: 12
Joined: 25 May 2019, 03:11

Re: 颜色判断为什么不行?

04 Oct 2019, 08:59

tmplinshi wrote:
04 Oct 2019, 07:09
可能跟当前激活的窗口有关。默认情况下,PixelGetColor 的 x y 坐标是相对于当前窗口的,可以通过 CoordMode 命令修改成相对于屏幕。

这种情况下可能用函数好一点。

Code: Select all

Loop
{
	WaitColorChange(724, 310, color_before, color_after)
	MsgBox, 
	(LTrim
		color_before: %color_before%
		color_after: %color_after%
	)
	Sleep, 100
}

WaitColorChange(x, y, ByRef color1 := "", ByRef color2 := "") {
	PixelGetColor, color1, x, y, RGB
	Loop {
		Sleep, 1000
		PixelGetColor, color2, x, y, RGB
	} Until (color1 != color2)
}
貌似是我的思路不对,但是想不明白啊
如果中间变换一次颜色,应该只提示一次颜色有变化,还是会不停的提示颜色有变化? 我的理解是只提示一次,但是实际上变换一次颜色后会不停的提示

但是每次不是会重新PixelGetColor一下before的颜色和after的颜色吗?如果变了一次以后PixelGetColor到的before的颜色和after颜色都是一样的,为什么会一直提示
tmplinshi
Posts: 1519
Joined: 01 Oct 2013, 14:57

Re: 颜色判断为什么不行?

04 Oct 2019, 10:57

不清楚,我测试没有问题。你就运行我那段测试代码试试,单独保存到一个文件中,不要加入其他代码,然后测试窗口就用浏览器打开这个帖子,滚动一下网页颜色就会有变化,不滚动则不会弹出对话框。
jsjcjsjc
Posts: 12
Joined: 25 May 2019, 03:11

Re: 颜色判断为什么不行?

05 Oct 2019, 06:11

@tmplinshi
非常感谢您的回复,但是你的代码貌似和我一样的情况,如下
“如果中间变换一次颜色,应该只提示一次颜色有变化,还是会不停的提示颜色有变化? 我的理解是只提示一次,但是实际上变换一次颜色后会不停的提示颜色有变化
因为颜色变换一次后,下面的循环中before和after的颜色是一样的,为什么还会提示颜色有变化呢?”

有点不明白啊

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 4 guests