[英]How to detect if my Windows application has ended?
基本上,標題說的是我需要檢測程序何時結束(例如有人單擊任務管理器中的結束任務或諸如此類)。 誰能指出我通過某種例子來處理此類事件的事件嗎? 感謝您提供的任何幫助
您需要打開此過程。 這樣,您將檢索其句柄。 之后,您可以簡單地等待此句柄。
HANDLE h = OpenProcess(....);
WaitForSingleObject(h);
進程和線程的處理在許多方面都類似於Windows事件處理。 一旦該過程或線程完成,就會發出信號。
這取決於您的應用如何終止以及它是什么類型的應用。
對於具有UI的應用程序:
對於控制台應用程序,您可以使用SetConsoleCtrlHandler函數來通知大多數應用程序終止情況(我對此沒有任何經驗,因此無法提供很多詳細信息)。
對於服務,可以以幾乎相同的方式使用RegisterServiceCtrlHandler函數。
對於所有類型的應用程序,如果該應用程序通過TerminateProcess函數被另一個進程強行終止, 則無法獲得通知 :
如果某個進程被TerminateProcess終止,則該進程的所有線程將立即終止,而沒有機會運行其他代碼。 這意味着線程不執行終止處理程序塊中的代碼。 此外,沒有附加的DLL通知該進程正在分離。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.