2012-08-16 42 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或類似方法),並在進程終止時通知句柄。您需要與目標進程進行協調,以便跟蹤關閉是乾淨還是強制。

相關問題