Skip to content

[Bug] 中键唤醒超级面板失效,重启软件或者重新打开超级面板可以解决 #641

Description

@akahoz94

main.log

🐛 Bug 描述

Windows 10 + ZTools v3.1.0(最新版)下,中键长按(300ms)唤醒超级面板,使用一段时间后会失效;完全退出并重启 ZTools 后恢复

📋 复现步骤

  1. 启动 ZTools,中键长按可正常唤出超级面板
  2. 正常使用一段时间(时长不定,可能几十分钟到数小时)
  3. 再次中键长按 → 无反应,面板无法唤出
  4. 完全退出并重启 ZTools → 恢复

🔍 根因分析(解包 app.asar + 原生模块 ztools_native.node 源码)

  • 超级面板的中键唤醒由原生 C++ 模块实现:在独立线程安装 WH_MOUSE_LL 低级鼠标钩子 + SetTimer 做长按检测(StartMouseMonitor / MouseMonitorThread
  • 该钩子线程没有异常处理、没有看门狗、没有健康检查,钩子一旦被 Windows 静默移除(回调超时、消息泵卡住、系统负载或与其他钩子冲突)或线程崩溃,程序不会自动重新安装
  • 唯一恢复手段就是重启(或切换触发方式触发 stopMonitor+startMonitor 重装钩子),所以「重启后恢复」

💻 环境信息

  • OS: Windows 10
  • ZTools 版本: 3.1.0
  • 触发方式: 中键长按 300ms

💡 建议修复方向

  1. 为鼠标钩子增加健康检查/看门狗:定期检测钩子是否仍生效,失效时自动重新安装
  2. MouseMonitorThread 的消息循环加异常保护(SEH/RAII),避免线程崩溃后钩子静默消失
  3. 排查与 uiohook-napi 的 WH_MOUSE_LL 钩子共存时的冲突

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions