You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让AutoHotkey脚本检测指定AHK脚本是否正在运行?

修正AHK脚本的运行状态检测问题

原脚本存在两个核心问题:

  1. 用WinExist("1UH_Yourself.ahk")检测不可靠——未编译的AHK脚本运行时,进程是ahk.exe,窗口标题默认是脚本路径,但如果目标脚本修改了窗口标题、启用了#NoTrayIcon或者隐藏了窗口,这个检测会失效。
  2. 代码存在语法错误:Menu, Curar_Menu, Color, 800000 Process, Close, 1UH_Yourself.ahk把两个命令写在同一行,会导致脚本执行出错。

下面提供两种可靠的修改方案:

方案一:通过进程命令行精准检测(推荐,适用于未编译脚本)

利用AHK未编译脚本的进程命令行包含完整脚本路径的特性,精准判断目标脚本是否在运行:

SetTitleMatchMode, 2
DetectHiddenWindows, On

UH_Yourself:
; 定义目标脚本的完整路径
targetScript := "C:\Users\fabri\OneDrive\Desktop\Macros\Macros\1Cura\1UH_Yourself.ahk"
isRunning := false

; 遍历所有ahk.exe进程,检查命令行是否包含目标脚本路径
Process, Exist, ahk.exe
loop {
    pid := ErrorLevel
    if pid = 0
        break
    Process, CmdLine, %pid%
    if InStr(CmdLine, targetScript) {
        isRunning := true
        break
    }
    Process, Exist
}

if (isRunning) {
    ; 脚本在运行,关闭进程并修改菜单颜色
    Menu, Curar_Menu, Color, 800000
    Process, Close, %pid%
} else {
    ; 脚本未运行,启动脚本并修改菜单颜色
    Run, %targetScript%
    Menu, Curar_Menu, Color, 008000
}
Return

方案二:给目标脚本添加专属标识(简单易实现)

在1UH_Yourself.ahk的开头添加一行代码,创建一个唯一的隐藏窗口:

; 在目标脚本1UH_Yourself.ahk中添加
Gui +LastFound +AlwaysOnTop -Caption +ToolWindow, UH_Yourself_Unique_Window
WinHide

然后主脚本修改检测逻辑:

SetTitleMatchMode, 2
DetectHiddenWindows, On

UH_Yourself:
if WinExist("UH_Yourself_Unique_Window") {
    Menu, Curar_Menu, Color, 800000
    ; 通过窗口获取PID并关闭进程
    WinGet, pid, PID, UH_Yourself_Unique_Window
    Process, Close, %pid%
} else {
    Run, C:\Users\fabri\OneDrive\Desktop\Macros\Macros\1Cura\1UH_Yourself.ahk
    Menu, Curar_Menu, Color, 008000
}
Return

补充说明

  • 如果目标脚本是编译后的EXE文件,直接用Process, Exist, 1UH_Yourself.exe检测即可,无需复杂逻辑。
  • 原脚本中重复执行Process, Close, 1UH_Yourself.ahk是没必要的,执行一次即可。

内容的提问来源于stack exchange,提问作者Fabricio Moura Ramalho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 20:42:12