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%