Autohotkey 中文论坛

完整版: if条件判断的困惑
你目前正在浏览的是简化版. 请点击这里浏览完整版
if 2=3
{
!2::
msgbox,it is on
return
}
return

这个代码运行的时候按下Alt+2会跳出对话框,但是明明不符合条件判断语句“if 2=3”啊,应该怎么做才能用if限制住热键呢?
另外如果改成

#IfWinActive ahk_class *****(*号只是举个例子)
!2::
msgbox,it is on
return
#IfWinActive

这样又可以限制了,只要窗口*****没激活Alt+2就不会起效,#IfWinActive 可以限制住热键

困惑,谁能解答一下。。。

[ 本帖最后由 lieqixuezhe 于 2008-10-3 11:20 编辑 ]
热键是一个特殊的标签,不受程序流程控制!直接由热键激活这个标签。
按照你的思路可以这样写:
!2::
if 3=2
{
msgbox,it is on
return
}
return
谢谢,遗憾的是如果要用一个条件来限制多个热键,以上方法不得不在每个热键中加入这样的语句。
那再问一下,#IfWinActive 在限制的时候起作用是否说明它不是程序流程控制的语句,在程序中的位置无关紧要?

[ 本帖最后由 lieqixuezhe 于 2008-10-3 07:45 编辑 ]
可惜,一个问题解决了又带来另一个问题
!F4::
if 2=3
{
msgbox,it is ok
}
return
这个命令虽然实现了判断,但是在条件不成立的时候Alt+F4这个快捷键也被占用了。
改成
~!F4::
if 2=2
{
msgbox,it is ok
}
return
在不想Alt+F4起效的情况下按下Alt+F4实际上执行了两条命令(Alt+F4和msgbox),这个时候我只需要msgbox命令起效

问这个问题的初衷是想设计一个inputbox接受一个变量,根据变量的不同来设定不同的热键,当一个热键不起效时又不影响它原来的功能,起效时屏蔽原来的功能。

[ 本帖最后由 lieqixuezhe 于 2008-10-3 08:13 编辑 ]
不知我电脑有无问题
#4::
if 2=2
{
msgbox,ok
}
else
{
msgbox,no
}
return

无论条件是2=2还是2=3弹出来的都是 no

困惑

[ 本帖最后由 lieqixuezhe 于 2008-10-3 08:36 编辑 ]
应该这样写:
a:=2
#4::
if a=2
{
msgbox,ok
}
return

建议你使用 #IfWinActive
谢谢
看来只能把#IfWinActive和if结合起来解决问题了
参考网址