2012-08-16 40 views
1

有没有什么办法可以让我的Windows程序(C/C++)在Taskmgr.exe中杀死它时收到通知?它似乎没有收到任何特殊的Windows消息 - 它只是终止。如何判断我的Windows应用程序何时终止?

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

谢谢。

回答

3

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

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

这不是张贴到窗口的消息队列,你只能在你的主消息泵检索。

这只有当它干净地退出。如果这个过程被杀死,这种事情就不会发生。

一种可以检测到它在下次启动时被杀死的方法是在启动时创建一个文件并在关闭时销毁该文件,如果该文件在下次启动时仍然存在,则说明该进程已被终止,而不是它是否因错误而死亡,或者是因用户请求而死亡。

1

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

相关问题