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

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions