我有一个简单的autohotkeys宏来测试窗口是否处于活动状态。如果它处于活动状态,我想做一些事情然后停止,直到窗口变为非活动状态,然后再次重新激活。
问题是我测试窗口先前是否处于非活动状态是不起作用的。这是我的代码:
^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
当这个运行时,我得到第一个消息框,指示完成状态(开头是假的)。但是(!done)不会计算为true,并且不会触发第二个消息框(hello)。知道这里有什么问题吗?
答案 0 :(得分:2)
AutoHotkey将true
/ false
- 布尔表达式设为1
/ 0
。如果我是你,我根本不会使用以前的关键字。
但是,你可以,你只需要将初始化改为
done := false
(商店表达)。 done = false
实际上与done := "false"
(字符串赋值)相同。 Afaik,您也可以将其更改为
done = %false%