如果系統試圖關閉,應用可以通過覆蓋OnQueryEndSession()
並返回FALSE
來阻止此關閉。當然,這意味着WM_ENDSESSION
是對停機做出迴應的唯一明確信息。我應該處理WM_ENDSESSION,WM_QUERYENDSESSION,兩者還是兩者都不?
另一方面,this question的最佳答案引用不低於Raymond Chen的話說,迴應WM_ENDSESSION
實質上是毫無意義的。所以這是令人困惑的。
是否有某種「最佳實踐」原則可用於決定哪些消息(如果有)應該響應哪些類型的應用程序關閉工作?
特別是,如果沒有處理消息,關閉過程是否會導致應用程序關閉,就好像用戶手動關閉了應用程序(例如,單擊紅色的X關閉按鈕)?來自微軟的
這是一個誤導。 [原文在這裏](http://blogs.msdn.com/b/oldnewthing/archive/2008/04/21/8413175.aspx),它不會*說*迴應'WM_ENDSESSION'是毫無意義的,它他說,Windows在WM_ENDSESSION後發送'WM_CLOSE'是毫無意義的。 (我認爲或許這張海報與關於處理DLL_PROCESS_DETACH的[類似引用](http://blogs.msdn.com/b/oldnewthing/archive/2012/01/05/10253268.aspx)混淆。) –