崩溃原因查找
- 尝试通过捕获并分析崩溃转储文件 (Crash Dump),找到问题的原因。
- 根据初步分析,追踪为联软的mozartbreathcore.dll异常
- 确定崩溃的异常类型和地址,确定win8/win10系统的异同
解决方案1:抑制系统错误弹窗
- 调用 SetErrorMode(SEM_NOGPFAULTERRORBOX | SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);
- SEM_NOGPFAULTERRORBOX: 防止系统显示通用保护错误(General Protection Fault,即访问冲突)的消息框。
- SEM_FAILCRITICALERRORS: 防止系统显示所有关键错误消息框。
- SEM_NOOPENFILEERRORBOX: 防止系统显示打开文件失败的错误消息框。
- 并非所有错误类型都能被捕获。
解决方案2:自行处理异常
- 使用 SetUnhandledExceptionFilter 函数设置一个异常过滤器,用以捕获未处理的异常。
- 并非所有错误类型都能处理。
解决方案3:模拟自行点掉
- 因为该弹框不影响程序运行,所以可以考虑通过模拟键盘操作来关闭弹框。
- 使用FindWindow和PostMessage模拟点击“确定”按钮。
- 需要注意,在win8/win10系统中,弹框的窗口类名可能不同。