autohotkeys表达式未评估

时间:2015-03-28 21:48:42

标签: autohotkey

我有一个简单的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)。知道这里有什么问题吗?

1 个答案:

答案 0 :(得分:2)

AutoHotkey将true / false - 布尔表达式设为1 / 0。如果我是你,我根本不会使用以前的关键字。

但是,你可以,你只需要将初始化改为

done := false

(商店表达)。 done = false实际上与done := "false"(字符串赋值)相同。 Afaik,您也可以将其更改为

done = %false%