AutoHotkey的SetTitleMatchMode必须放脚本顶部吗?可否仅对bar.exe生效?
AutoHotkey SetTitleMatchMode 相关问题解答
报错原因
脚本报错是因为SetTitleMatchMode Regex所在位置无效:
- AutoHotkey 脚本的自动执行段仅会运行从脚本开头到第一个热键/热字符串定义、
Return、Exit指令前的内容 - 你的
SetTitleMatchMode写在了第一个热键!A::Send Foo的后方,且夹在两个#IfWinActive上下文块之间,不属于可执行的有效代码范围,因此解释器抛出错误。
SetTitleMatchMode 放置规则
SetTitleMatchMode 不需要必须放在脚本最顶部,它属于普通执行指令,会按照代码的执行顺序生效,作用范围是指令执行后所有的窗口匹配操作。
仅对 bar.exe 应用正则匹配规则的实现方案
不需要将SetTitleMatchMode放在顶部即可实现需求,推荐使用窗口匹配临时前缀方案,不会修改全局匹配规则,也不会影响其他窗口的匹配逻辑:
修改后的可运行脚本示例:
#NoEnv #Warn #SingleInstance Force #IfWinActive Foo ahk_exe foo.exe !A::Send Foo ; 窗口标题前加 RegEx 前缀,仅对当前这条匹配规则启用正则模式 #IfWinActive RegEx Bar$ ahk_exe bar.exe !A::Send Bar
如果确实需要调整全局SetTitleMatchMode,需要将所有该指令的调整逻辑全部放在自动执行段(所有热键定义之前),此时全局窗口匹配都会使用最后设置的匹配模式,其他不需要正则的匹配规则需要加上对应临时前缀(如Fast代表精确匹配、Slow代表模糊匹配)即可。
内容的提问来源于stack exchange,提问作者Wenfang Du
相关产品推荐
相关产品推荐

