这可能很愚蠢。当我的进程崩溃时, WerFault.exe 已经启动,我只有在关闭此窗口或终止其任务后才能重新获得控制权。
我正在寻找一种简单的方法,不让崩溃的程序显示这个窗口,或者让我抓住这个崩溃的任何想法。
顺便说一句,SEH没用。我不确定为什么。当我使用SEH时,崩溃仍然存在。谢谢!
现在我只想弄清楚如何避开这个 WerFault.exe 窗口,有时还会 csrss.exe 窗口并重新获得控制权。
答案 0 :(得分:2)
使用Application Recovery and Restart API重启Windows错误报告(WER)并在崩溃时恢复应用。使用RegisterApplicationRestart()
注册您要重新启动的意图。使用RegisterApplicationRecoveryCallback()
注册保存和恢复状态数据的意图。
答案 1 :(得分:0)
我没有尝试过这个,但是这个api:WerAddExcludedApplication
应该禁用错误导出:http://msdn.microsoft.com/en-us/library/bb513617%28v=VS.85%29.aspx
至于重新启动应用程序,您可以创建另一个后台进程,该进程将启动主进程并监视其行为方式。如果它崩溃然后重新启动它。
[编辑]
不幸的是,这个api可能无效,正如评论中所建议的那样 - 要删除此对话框,您必须FindWindow() and SendMessage(... WM_CLOSE...).