1

当我的 Windows 程序 (C/C++) 从 Taskmgr.exe 被杀死时,有什么方法可以收到通知吗?它似乎没有收到任何特殊的 Windows 消息 - 它只是终止。

我不想阻止它终止,我只想写一个它被手动终止的通知。

谢谢。

4

2 回答 2

3

如果它是一个完整的 Windows 应用程序,您应该在应用程序退出之前在消息泵中获取 WM_QUIT。

正如 MSDN 所述:http: //msdn.microsoft.com/en-us/library/windows/desktop/ms632641 (v=vs.85).aspx

这不会发布到窗口的消息队列中,您只能在主消息泵中检索它。

只有当它干净地退出时。如果进程被杀死,这永远不会发生。

您可以检测到它在下次启动时被杀死的一种方法是在启动时创建一个文件并在关闭时销毁,如果该文件在下次启动时仍然存在,则您知道该进程已被杀死,但不知道它是否由于错误或应用户请求而被杀死。

于 2012-08-16T10:35:40.637 回答
1

如果您需要立即知道您的进程何时被杀死,我知道的唯一方法是使用另一个进程作为看门狗。如果您使用 OpenProcess() 来获取相关进程的句柄,则可以等待该句柄(通过 WaitForSingleObject 或类似方法),并且在进程终止时会发出该句柄的信号。您需要与目标进程进行一些协调,以跟踪关闭是干净的还是强制的。

于 2012-08-16T11:29:42.443 回答