autohotkeys 表达式不评估
autohotkeys expression not evaluating
我有一个简单的自动热键宏来测试 window 是否处于活动状态。如果它处于活动状态,我想做点什么,但然后停止,直到 window 变为非活动状态,然后再次激活。
问题是我对 window 之前是否处于非活动状态的测试不起作用。这是我的代码:
^w::
;hotkey always fires
done = false
SetTimer, CheckPopups, 10000 ; check every 10 seconds for annoying popup
CheckPopups:
if ( WinActive("Volume Spike - Down") )
{
;specific lines only when active window is true
msgbox (%done%)
if (!done) {
msgbox hello
done := true
}
}
IfWinNotActive Volume Spike - Down
{
done = false
msgbox Not
}
Return
当它运行时,我得到第一个指示完成状态的消息框(开始时为 false)。但是 (!done) 不会评估为 true,并且不会触发第二个消息框 (hello)。知道这里出了什么问题吗?
AutoHotkey 将 true
/ false
-布尔表达式视为 1
/ 0
。如果我是你,我根本不会使用以前的关键字。
但是,你仍然可以,你只需要将初始化更改为
done := false
(存储表达式)。 done = false
其实和 done := "false"
一样(字符串赋值)。 Afaik,您也可以将其更改为
done = %false%
我有一个简单的自动热键宏来测试 window 是否处于活动状态。如果它处于活动状态,我想做点什么,但然后停止,直到 window 变为非活动状态,然后再次激活。
问题是我对 window 之前是否处于非活动状态的测试不起作用。这是我的代码:
^w::
;hotkey always fires
done = false
SetTimer, CheckPopups, 10000 ; check every 10 seconds for annoying popup
CheckPopups:
if ( WinActive("Volume Spike - Down") )
{
;specific lines only when active window is true
msgbox (%done%)
if (!done) {
msgbox hello
done := true
}
}
IfWinNotActive Volume Spike - Down
{
done = false
msgbox Not
}
Return
当它运行时,我得到第一个指示完成状态的消息框(开始时为 false)。但是 (!done) 不会评估为 true,并且不会触发第二个消息框 (hello)。知道这里出了什么问题吗?
AutoHotkey 将 true
/ false
-布尔表达式视为 1
/ 0
。如果我是你,我根本不会使用以前的关键字。
但是,你仍然可以,你只需要将初始化更改为
done := false
(存储表达式)。 done = false
其实和 done := "false"
一样(字符串赋值)。 Afaik,您也可以将其更改为
done = %false%