如何知道我的Windows应用程序何时被终止?

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

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

谢谢。

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

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

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

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

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

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