IfEqual总是评估为False(AutoHotKeys)

时间:2016-11-20 19:57:38

标签: if-statement colors compare equals autohotkey

我有两种方法可以用来比较两种颜色。首先是获得颜色

/*
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

为什么我的检查颜色总是返回false?

2 个答案:

答案 0 :(得分:2)

https://autohotkey.com/docs/commands/IfEqual.htm

$lt

  

IfEqual, var, value - 变量名称。

     

var - 文字字符串,数字或变量引用(例如   %VAR2%)。

因此,如果您开始使用value命令而不是IfEqual,那么它应该是这样的:

if (expression)

if (expression) altrenative:

IfEqual, colorToCheck, %colorToCompare%,Return 1

答案 1 :(得分:1)

“IfEqual%colorToCheck%,%colorToCompare%,Return,1”

应该是

IfEqual colorToCheck, %colorToCompare%, Return, 1

expression 中的变量名称未包含在百分号中(伪数组和其他双引号除外)。

如果 variable 包含在表达式中的百分号内(例如%Var%),则该变量包含的任何内容都被假定为另一个变量的名称或部分名称(如果没有这样的变量,%Var%解析为空字符串)。