main.log
🐛 Bug 描述
Windows 10 + ZTools v3.1.0(最新版)下,中键长按(300ms)唤醒超级面板,使用一段时间后会失效;完全退出并重启 ZTools 后恢复。
📋 复现步骤
- 启动 ZTools,中键长按可正常唤出超级面板
- 正常使用一段时间(时长不定,可能几十分钟到数小时)
- 再次中键长按 → 无反应,面板无法唤出
- 完全退出并重启 ZTools → 恢复
🔍 根因分析(解包 app.asar + 原生模块 ztools_native.node 源码)
- 超级面板的中键唤醒由原生 C++ 模块实现:在独立线程安装
WH_MOUSE_LL 低级鼠标钩子 + SetTimer 做长按检测(StartMouseMonitor / MouseMonitorThread)
- 该钩子线程没有异常处理、没有看门狗、没有健康检查,钩子一旦被 Windows 静默移除(回调超时、消息泵卡住、系统负载或与其他钩子冲突)或线程崩溃,程序不会自动重新安装
- 唯一恢复手段就是重启(或切换触发方式触发 stopMonitor+startMonitor 重装钩子),所以「重启后恢复」
💻 环境信息
- OS: Windows 10
- ZTools 版本: 3.1.0
- 触发方式: 中键长按 300ms
💡 建议修复方向
- 为鼠标钩子增加健康检查/看门狗:定期检测钩子是否仍生效,失效时自动重新安装
- 给
MouseMonitorThread 的消息循环加异常保护(SEH/RAII),避免线程崩溃后钩子静默消失
- 排查与 uiohook-napi 的 WH_MOUSE_LL 钩子共存时的冲突
main.log
🐛 Bug 描述
Windows 10 + ZTools v3.1.0(最新版)下,中键长按(300ms)唤醒超级面板,使用一段时间后会失效;完全退出并重启 ZTools 后恢复。
[SuperPanel]触发记录),随后中键彻底无响应📋 复现步骤
🔍 根因分析(解包 app.asar + 原生模块 ztools_native.node 源码)
WH_MOUSE_LL低级鼠标钩子 +SetTimer做长按检测(StartMouseMonitor/MouseMonitorThread)💻 环境信息
💡 建议修复方向
MouseMonitorThread的消息循环加异常保护(SEH/RAII),避免线程崩溃后钩子静默消失