Autohotkey 自动热键像素颜色比较永远不会产生真值
我正在比较屏幕上一个按钮的颜色,看看它是否从灰色变为蓝色,如果变了,就点击它 以下是我的代码片段:Autohotkey 自动热键像素颜色比较永远不会产生真值,autohotkey,Autohotkey,我正在比较屏幕上一个按钮的颜色,看看它是否从灰色变为蓝色,如果变了,就点击它 以下是我的代码片段: pixelgetcolor c,%x1%,%y1% msgbox %c% ifequal, c, COLOR ; word COLOR is a place holder here .please see below for what I tried in place { mousemove,%x1%,%y1% mouseclick,l } 在msgbox输
pixelgetcolor c,%x1%,%y1%
msgbox %c%
ifequal, c, COLOR ; word COLOR is a place holder here .please see below for what I tried in place
{
mousemove,%x1%,%y1%
mouseclick,l
}
在msgbox
输出中,我可以看到颜色为254ADD
,下面是我尝试用以替代上面的单词color的内容
254ADD
"254ADD"
COL=254ADD then
%COL%
COL
"COL"
"%COL%"
在所有这些情况下,我的IfEqual行都没有生成“true”并单击按钮
我遗漏了什么吗?有一件事我没有尝试用0x254ADD来代替单词COLOR,它奇迹般地工作了 我没有尝试用0x254ADD来代替颜色这个词,它奇迹般地工作了 默认情况下,颜色应返回为BGR(蓝绿红)
0x
前缀为大写十六进制。如果你的msgbox显示的是
254ADD
,而不是0x254ADD
,我真的不知道该说什么。这不应该发生。也许你是在玩一个行为古怪的旧版本
但不管怎样,现在我们来谈谈。我认为你不可能找到更传统的AHK命令。这和2005年的水平差不多。请切换到未弃用的现代语句。但不管怎样,您现在要做的是将变量
c
持有的值与文本254ADD
当然,这永远不会是真的。数字不等于某些文本。
如果您添加
0x
前缀,那么AHK知道您所指的是十六进制前缀。然后你将一个数字与另一个数字进行比较。现在至少有一个机会,你的if陈述会变成真的
因此,有两种方法可以做到:
IfEqual, c, 0x254ADD ;in hex
IfEqual, c, 2443997 ;in dec
但请去掉超贬义的遗留命令,总体上,考虑切换到使用新的、优越的表达式语法。 以下是所有非遗留代码:
PixelGetColor, c, % x1, % y1
MsgBox, % c
if (c = 0x254ADD)
{
MouseMove, % x1, % y1
Click
}
这里有一个很好的文档页面,可以帮助您开始学习传统语法和表达式语法之间的区别:默认情况下,颜色应返回为BGR(蓝绿红)
0x
前缀为大写十六进制。如果你的msgbox显示的是
254ADD
,而不是0x254ADD
,我真的不知道该说什么。这不应该发生。也许你是在玩一个行为古怪的旧版本
但不管怎样,现在我们来谈谈。我认为你不可能找到更传统的AHK命令。这和2005年的水平差不多。请切换到未弃用的现代语句。但不管怎样,您现在要做的是将变量
c
持有的值与文本254ADD
当然,这永远不会是真的。数字不等于某些文本。
如果您添加
0x
前缀,那么AHK知道您所指的是十六进制前缀。然后你将一个数字与另一个数字进行比较。现在至少有一个机会,你的if陈述会变成真的
因此,有两种方法可以做到:
IfEqual, c, 0x254ADD ;in hex
IfEqual, c, 2443997 ;in dec
但请去掉超贬义的遗留命令,总体上,考虑切换到使用新的、优越的表达式语法。 以下是所有非遗留代码:
PixelGetColor, c, % x1, % y1
MsgBox, % c
if (c = 0x254ADD)
{
MouseMove, % x1, % y1
Click
}
这里有一个很好的文档页面,可以帮助您开始学习传统语法和表达式语法之间的区别: