脚本重启时自动生成多实例致托盘残留,如何解决?
解决AHK脚本重启后多实例残留问题
关键修复步骤
- 将
#SingleInstance Force移至脚本最开头:你的现有脚本中SetWorkingDir在它之前,这会导致实例控制指令生效滞后。AHK的#开头指令需要优先执行,必须放在任何文件操作、外部引用之前。 - 排查外部引用脚本:暂时注释掉
#include Lsleep.ahk和#include SpeedUp DLL.ahk,测试是否还会出现多实例。如果问题消失,说明其中某个包含脚本存在干扰逻辑。 - 添加手动进程校验:如果指令顺序调整后仍无效,在脚本最顶部添加进程锁:
; 脚本最开头插入 Process, Exist, %A_ScriptName% if (ErrorLevel != A_PID) ExitApp - 修正重启逻辑(若有):如果脚本包含自定义重启代码,必须确保先退出当前实例再启动新进程:
; 正确的重启示例 Run, "%A_ScriptFullPath%" ExitApp - 清理托盘缓存与权限测试:手动退出所有AHK实例后,以管理员权限运行脚本,避免系统权限不足导致旧进程无法终止。
调整后的脚本开头示例
#SingleInstance Force #Persistent #NoEnv SetWorkingDir %A_ScriptDir% #InstallKeybdHook #InstallMouseHook SendMode Input Process, Priority,,, A SetBatchLines -1 SetKeyDelay, -1, -1 SetMouseDelay, -1, -1 SetControlDelay -1 SetWinDelay -1 ListLines Off #MaxHotkeysPerInterval 99000000 #HotkeyInterval 99000000 #KeyHistory 0 #MaxThreads 255 #include Lsleep.ahk #include SpeedUp DLL.ahk DllCall("ntdll\ZwSetTimerResolution", "Int",5000, "Int",1, "Int*",MyCurrentTimerResolution)
内容的提问来源于stack exchange,提问作者gel kayano
相关产品推荐
相关产品推荐

