如何以编程方式检测应用程序在 Windows 中崩溃?

How to programmatically detect an application has crashed in Windows?

我是 运行 一个启动多个应用程序的 Python 脚本。我需要一种方法来检测启动的应用程序是否已崩溃。一些应用程序有内部崩溃处理

如何检测崩溃?

如果他们有内部崩溃处理,就不可能检测到。应用程序将处理错误并正常退出。如果您将自己附加为调试器,您甚至无法检测到这一点。

原因是exception dispatching (MSDN):

  1. 调试器收到有关异常的通知。这称为第一次机会异常。但是,这可能是 "normal",例如FileNotFound,这是应用程序所期望的。
  2. Windows正在寻找想要处理异常的人。这可以是 Python 应用程序的 except 块,C# 或 C++ 中的 catch 块,甚至是一般的 "unhandled exception handler".
  3. 如果没有人想要处理该应用程序,调试器会再次收到通知。这次,异常被标记为第二次机会异常。这意味着应用程序接下来会崩溃。

您希望在第 3 步中获得通知,但是,应用程序已在第 2 步中停止该过程。