使用带有表达式的 ifwinactive 的自动热键不起作用
autohotkeys using ifwinactive with expression not working
我正在使用 AutoHotKeys 来测试 window 是否与表达式一起处于活动状态。我似乎无法让它工作。我将表达式分配给一个变量,然后测试 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
}
当我启动脚本并且 window 未激活时,它会显示消息框 Hello。然后 10 秒后它再次显示。如果 window 处于活动状态且 done = false,它应该只显示消息框。知道我做错了什么吗?
您正在使用 #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
我正在使用 AutoHotKeys 来测试 window 是否与表达式一起处于活动状态。我似乎无法让它工作。我将表达式分配给一个变量,然后测试 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
}
当我启动脚本并且 window 未激活时,它会显示消息框 Hello。然后 10 秒后它再次显示。如果 window 处于活动状态且 done = false,它应该只显示消息框。知道我做错了什么吗?
您正在使用 #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