我正在开发一个需要启动进程并等待其输出的应用程序。有时这个过程会崩溃(很多时候),但由于我有缓解任务,所以不是真正的问题。问题是Windows检测到进程崩溃并提示用户输入,要么在线检查解决方案,要么只是关闭程序。
我尝试通过等待提交到Runnable
的{{1}}中的流程完成并使用返回的ExecutorService
指定超时来解决此问题。速度并不是应用程序真正关心的问题,外部进程应该运行几秒钟。
这是我正在使用的代码:
Future
上面的代码运行良好,但崩溃对话框仍然弹出,没有用户交互就不会消失。
This question提出了类似的问题,但从.Net的角度来看 建议通过Windows注册表来抑制弹出窗口,这是我无法做到的,因为它的影响对于机器中的所有进程都是全局的。
或
其他详情:
谢谢。
答案 0 :(得分:0)
如前所述,您应该使用SetErrorMode win32调用。它不会改变整个系统,只适用于你的过程和它的孩子(这显然是你想要的)。 正确的电话似乎是:
SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX);
另请参阅MSDN文档: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680621%28v=vs.85%29.aspx
问候。