答案1
我不明白你的脚本,但答案是你不必将其放在顶部。它会影响所有后续命令,直到return
。
概念验证脚本:
F1::
MsgBox, This should give 1`nA_TitleMatchMode=%A_TitleMatchMode%
SetTitleMatchMode, 2
MsgBox, This should give 2`nA_TitleMatchMode=%A_TitleMatchMode%
SetTitleMatchMode, regex
MsgBox, This should give regex`nA_TitleMatchMode=%A_TitleMatchMode%
return
F2::
MsgBox, This should give 1`nA_TitleMatchMode=%A_TitleMatchMode%
return
为了确信,请运行上述程序并连续按 F2、F1、F2。
每次按下按键都会启动一个新线程,因此SetTitleMatchMode
会重新初始化为1
。
SetTitleMatchMode
是多余的。您的代码应如下所示(我没有测试):
#NOEnv
#Warn
#SingleInstance Force
SetTitleMatchMode Regex
!A::
if WinActive("Foo ahk_exe foo.exe")
MsgBox, Foo
if WinActive("Bar$ ahk_exe bar.exe")
MsgBox, Bar