AutoHotKey:SetTitleMatchMode神秘地设置为1

时间:2017-09-20 19:02:44

标签: autohotkey

今天在我的主AutoHotKey脚本中,所有特定于应用程序的热字符串和热键神秘地停止工作。经过大量的调试后,我发现SetTitleMatchMode已经在后台设置为1 ...即使我从未在我的代码中明确地这样做。 所以,我的所有指令都是......

#IfWinActive Some Window Substring 

......已经不再工作了。

代码行

SetTitleMatchMode 2

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

之前有没有人见过这个问题?

我目前的假设是声明

#Include SomeOtherScript.ahk

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

1 个答案:

答案 0 :(得分:1)

Like Oleg said in your comments,您的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%

您还可以使用SetTitleMatch等搜索工具搜索文件夹,检查代码中隐藏的意外或遗忘的grep语句:

C:\> grep -iR SetTitleMatch .

第三种选择是尝试采用分而治之的方法来隔离导致问题的代码。保存您的工作,然后删除一半代码,看看问题是否仍然存在。如果仍然行为不端,请删除剩余代码的一半,然后再次检查。如果通过删除某些代码来解决问题,则添加一半的已删除代码并再次检查。最终,运气不错,您将隔离并识别导致问题的陈述