使用ifwinactive且表达式无效的autohotkeys

时间:2015-03-28 19:41:27

标签: autohotkey

我正在使用AutoHotKeys来测试窗口是否与表达式一起处于活动状态。我似乎无法让它发挥作用。我将表达式赋给变量,然后测试ifWinActive和变量。 AutoHotKeys似乎无法正确评估表达式。这是我的剧本:

^W::
;hotkey always fires

done = false


SetTimer, CheckPopups, 10000    ; check every 10 seconds for window
CheckPopups:    
this := (done != true)

#IfWinActive "Volume Spike - Down" and this 
{
;specific lines only when active window is true and done is false
msgbox hello
done := true

}
IfWinNotActive Volume Spike - Down
{
done = false
}

当我启动脚本并且窗口未激活时,它会显示消息框Hello。然后10秒后再次显示它。如果窗口处于活动状态且done = false,它应仅显示消息框。知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

您正在使用#IfWinActive a directive used to create conditional hotkeys。您应该使用IfWinActive代替。

您还可以在if子句中使用函数版本WinActive()。它让我看起来更清洁。

这是一个简短的例子:

#Persistent

done := false
SetTimer, CheckPopups, 1000 ; Check every second for window
return

CheckPopups:

    if ( WinActive("Volume Spike - Down") ) and (!done) {
        msgBox, Hello
        done := true
    } else {
        done := false
    }

return