IfEqual 总是评估为 False (AutoHotKeys)
IfEqual always evaluating to False (AutoHotKeys)
我有两种方法可以用来获取和比较两种颜色。首先是获取颜色
/*
This function returns the color at the given coordinates in hexadecimal format
*/
GetColor(x, y) {
MouseMove x, y
PixelGetColor, colorToReturn, x, y
Return %colorToReturn%
}
这是我的检查颜色方法
/*
This function checks the passed color with the color at 600, 475.
*/
CheckColor(colorToCheck) {
colorToCompare := GetColor(600, 475)
MsgBox %colorToCheck% - %colorToCompare%
IfEqual %colorToCheck%, %colorToCompare%, Return, 1
Return 0
}
我用这个热键调用它,但我总是返回 0,即使这两种颜色是相同的颜色。
^t:: ; CTRL + T test color compare
colorToTest := GetColor(600, 475)
result := CheckColor(colorToTest)
MsgBox %result%
RETURN
为什么我的检查颜色总是 return 错误?
https://autohotkey.com/docs/commands/IfEqual.htm
IfEqual, var, value
var
- The variable name.
value
- A literal string, number, or variable reference (e.g.
%var2%).
因此,如果您设置为使用 IfEqual
命令而不是 if (expression)
,它应该如下所示:
IfEqual, colorToCheck, %colorToCompare%,Return 1
if (expression)
备选方案:
if (colorToCheck=colorToCompare)
Return 1
"IfEqual %colorToCheck%, %colorToCompare%, Return, 1"
应该是
IfEqual colorToCheck, %colorToCompare%, Return, 1
expression中的变量名不包含在百分号中(伪数组和其他双重引用除外)。
如果表达式中的 variable 包含在百分号中(例如 %Var%),则该变量包含的任何内容都被假定为名称或部分名称另一个变量(如果没有这样的变量,%Var% 解析为空字符串)。
我有两种方法可以用来获取和比较两种颜色。首先是获取颜色
/*
This function returns the color at the given coordinates in hexadecimal format
*/
GetColor(x, y) {
MouseMove x, y
PixelGetColor, colorToReturn, x, y
Return %colorToReturn%
}
这是我的检查颜色方法
/*
This function checks the passed color with the color at 600, 475.
*/
CheckColor(colorToCheck) {
colorToCompare := GetColor(600, 475)
MsgBox %colorToCheck% - %colorToCompare%
IfEqual %colorToCheck%, %colorToCompare%, Return, 1
Return 0
}
我用这个热键调用它,但我总是返回 0,即使这两种颜色是相同的颜色。
^t:: ; CTRL + T test color compare
colorToTest := GetColor(600, 475)
result := CheckColor(colorToTest)
MsgBox %result%
RETURN
为什么我的检查颜色总是 return 错误?
https://autohotkey.com/docs/commands/IfEqual.htm
IfEqual, var, value
var
- The variable name.
value
- A literal string, number, or variable reference (e.g. %var2%).
因此,如果您设置为使用 IfEqual
命令而不是 if (expression)
,它应该如下所示:
IfEqual, colorToCheck, %colorToCompare%,Return 1
if (expression)
备选方案:
if (colorToCheck=colorToCompare)
Return 1
"IfEqual %colorToCheck%, %colorToCompare%, Return, 1"
应该是
IfEqual colorToCheck, %colorToCompare%, Return, 1
expression中的变量名不包含在百分号中(伪数组和其他双重引用除外)。
如果表达式中的 variable 包含在百分号中(例如 %Var%),则该变量包含的任何内容都被假定为名称或部分名称另一个变量(如果没有这样的变量,%Var% 解析为空字符串)。