今天在我的主AutoHotKey脚本中,所有特定于应用程序的热字符串和热键神秘地停止工作。经过大量的调试后,我发现SetTitleMatchMode已经在后台设置为1 ...即使我从未在我的代码中明确地这样做。 所以,我的所有指令都是......
#IfWinActive Some Window Substring
......已经不再工作了。
代码行
SetTitleMatchMode 2
已经在代码中,并没有解决问题。
之前有没有人见过这个问题?
我目前的假设是声明
#Include SomeOtherScript.ahk
自动将标题匹配模式设置为1,除非' SomeOtherScript.ahk'显式地声明将SetTitleMatchMode设置为其他值。 但这是一个弱假设。 Include声明已存在很长时间了。
答案 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 .
第三种选择是尝试采用分而治之的方法来隔离导致问题的代码。保存您的工作,然后删除一半代码,看看问题是否仍然存在。如果仍然行为不端,请删除剩余代码的一半,然后再次检查。如果通过删除某些代码来解决问题,则添加一半的已删除代码并再次检查。最终,运气不错,您将隔离并识别导致问题的陈述