Summer1Solstice

如何判断脚本的调试状态

检查 A_DebuggerName 变量是否初始化,以及 A_DebuggerName 的值。
根据测试,VSCode 的调试模式下,A_DebuggerName 的值为 "Visual Studio Code"
SciTE 4 AutoHotkey 调试模式也存在 A_DebuggerName 变量,但我没有在官方文档中找到这个变量,因此可能并不是官方支持的。

如何判断脚本的启动方式

尝试判断 A_DebuggerName 的值,如果已初始化,那么就是由某个软件调试启动。
尝试 FileOpen("*", "w") 打开标准输出,如果没有报错,那么就是由某个软件运行启动。
尝试 DllCall("AttachConsole", "uint", -1) 附加进程到父进程的控制台,如果成功返回非零值,那么就是由命令行运行启动。虽然少见但确实可以这么做。
如果以上都没有就是直接启动。