AutoHotKey:SetTitleMatchMode 神秘地设置为 1

AutoHotKey: SetTitleMatchMode mysteriously set to 1

今天,在我的 AutoHotKey 主脚本中,所有 application-specific 热字串和热键神秘地停止工作。经过大量调试后,我发现 SetTitleMatchMode 已在后台设置为 1……尽管我从未在我的代码中明确地这样做。 所以,我所有的指令都像...

#IfWinActive Some Window Substring 

...不再工作了。

代码行

SetTitleMatchMode 2

已经在代码中,并没有解决问题。

有没有人见过这个问题?

我目前的假设是陈述

#Include SomeOtherScript.ahk

自动将标题匹配模式设置为 1,除非 'SomeOtherScript.ahk' 明确声明将 SetTitleMatchMode 设置为其他值。 但这是一个薄弱的假设。 Include 语句已经存在很长时间了。

,您的 SetTitleMatchMode 2 需要执行才能生效,如果它不在脚本顶部附近,它可能不在自动执行部分。

像这样的问题通常可以通过添加一些临时日志记录来解决:

...

SetTitleMatchMode 2
MsgBox DEBUG1 SetTitleMatch is %A_TitleMatchMode%

... some code ...

MsgBox DEBUG2 SetTitleMatch is %A_TitleMatchMode%

... some more code ...

MsgBox DEBUG3a SetTitleMatch is %A_TitleMatchMode%
#Include SomeOtherScript.ahk
MsgBox DEBUG3b SetTitleMatch is %A_TitleMatchMode%

您还可以使用 grep:

等搜索工具搜索您的文件夹,从而检查隐藏在代码中的意外或遗忘的 SetTitleMatch 语句
C:\> grep -iR SetTitleMatch .

第三种选择是尝试分而治之的方法来隔离导致问题的代码。保存您的工作,然后删除一半代码并查看问题是否仍然存在。如果仍然不正常,删除剩余代码的一半,然后再次检查。如果通过删除一些代码解决了问题,add 将删除的代码退回一半并再次检查。最终,如果运气好的话,您将隔离并确定导致问题的语句