我是否必须将“SetTitleMatchMode”放在脚本顶部?

我是否必须将“SetTitleMatchMode”放在脚本顶部?

示例脚本:

#NoEnv
#Warn
#SingleInstance Force

#IfWinActive Foo ahk_exe foo.exe
  !A::Send Foo

SetTitleMatchMode Regex

#IfWinActive Bar$ ahk_exe bar.exe
  !A::Send Bar

运行它时,它会抛出:

在此处输入图片描述

我只想应用于SetTitleMatchMode Regexbar.exe不把它放在脚本上面可以实现吗?

答案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

为了确信,请运行上述程序并连续按 F2F1F2

每次按下按键都会启动一个新线程,因此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

相关内容