If statement IfEqual始终计算为False(自动热键)

If statement IfEqual始终计算为False(自动热键),if-statement,colors,compare,equals,autohotkey,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

我有两种方法来获取和比较两种颜色。首先是得到颜色

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

IfEqual、var、value

var
-变量名

-文字字符串、数字或变量引用(例如。 %var2%)

因此,如果设置为使用
IfEqual
命令,而不是
if(expression)
命令,则应如下所示:

IfEqual, colorToCheck, %colorToCompare%,Return 1
更替性:

if (colorToCheck=colorToCompare)
Return 1

IfEqual、var、value

var
-变量名

-文字字符串、数字或变量引用(例如。 %var2%)

因此,如果设置为使用
IfEqual
命令,而不是
if(expression)
命令,则应如下所示:

IfEqual, colorToCheck, %colorToCompare%,Return 1
更替性:

if (colorToCheck=colorToCompare)
Return 1
如果等于%colorToCheck%,%colorToCompare%,返回值为1

应该是

IfEqual colorToCheck, %colorToCompare%, Return, 1
中的变量名不包含在百分号中(伪数组和其他双引用除外)

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

“如果相等%colorToCheck%,%colorToCompare%,返回,1”

应该是

IfEqual colorToCheck, %colorToCompare%, Return, 1
中的变量名不包含在百分号中(伪数组和其他双引用除外)


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

哇,我发誓我试过了,但我一定忘了重新加载脚本。谢谢不幸的是,鲍勃的答案更准确,所以我必须给他,但我会投票给你哇,我可以发誓我试过了,但我一定忘了重新加载脚本。谢谢不幸的是,鲍勃的答案更准确,所以我不得不给他答案,但我会投票给你你更快更准确(+1)。你更快更准确(+1)。