You need to enable JavaScript to run this app. AutoHotkey长按ESC定时关窗脚本切换窗口后关错目标窗口问题求助
优惠活动
大模型
产品
解决方案
定价
更多

AutoHotkey长按ESC定时关窗脚本切换窗口后关错目标窗口问题求助

问题原因

原代码存在两个核心错误导致关闭窗口错位:

  • 触发长按逻辑时没有正确持久化存储目标窗口的唯一标识
  • 最终执行关闭命令时调用了A参数,指向命令执行时的当前激活窗口,而非触发时的窗口
修改后完整代码
$Escape::                                           ; 长按ESC(>0.5秒)触发关闭窗口逻辑,按住超过3.5秒可取消关闭
KeyWait, Escape, T0.5                               ; 等待0.5秒检测是否为长按,同时抑制按键连发
If ErrorLevel                                       ; 超时说明按键仍被按住,触发长按逻辑
    {
        WinGet, targetWinID, ID, A                  ; 记录触发时的激活窗口唯一ID
        WinGetTitle, winTitle, ahk_id %targetWinID% ; 获取窗口标题用于提示
        SplashTextOn,,150,,`n松开按键将在2秒后关闭 %winTitle%`n`n持续按住不放则取消关闭...
        KeyWait, Escape, T3                         ; 再等待3秒检测是否松手
        SplashTextOff
        If !ErrorLevel                              ; 3秒内松手,执行关闭逻辑
            {
                sleep 2000 
                If WinExist("ahk_id " targetWinID)  ; 先判断目标窗口是否还存在
                    PostMessage, 0x112, 0xF060,,, ahk_id %targetWinID% ; 关闭触发时记录的原窗口
                Return
            }
        KeyWait, Escape                             ; 按住超过3秒,等待按键松开后不执行任何操作
        Return
    }
    Send {Esc}                                      ; 短按则正常发送ESC键
Return
关键调整说明
  • 长按触发后第一时间获取当前激活窗口的唯一ID并存储,该ID不会随后续窗口切换变化
  • 关闭窗口时直接指定存储的窗口ID,不再依赖当前激活窗口状态
  • 新增窗口存在性判断,避免目标窗口已被手动关闭时产生无效操作
  • 修复了原代码中提示文本引用未定义变量%x%的错误,提示内容会正确显示待关闭窗口的标题

内容的提问来源于stack exchange,提问作者VeggieBot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 15:18:03