WM_ENDSESSION訊息

WM_ENDSESSION訊息會在系統處理WM_QUERYENDSESSION訊息的結果之後傳送至應用程式。 WM_ENDSESSION訊息會通知應用程式會話是否結束。

視窗會透過其 WindowProc 函式接收此訊息。

LRESULT CALLBACK WindowProc( 
  HWND hwnd,      // handle to window 
  UINT uMsg,      // message identifier 
  WPARAM wParam,  // end-session option 
  LPARAM lParam   // logoff option
);

參數

hwnd

視窗的控制碼。

uMsg

WM_ENDSESSION識別碼。

wParam

如果會話正在結束,此參數為 TRUE;會話可以在所有應用程式從處理此訊息傳回之後,隨時結束。 否則為 FALSE

lParam

此參數可以是下列一或多個值。 如果此參數為 0,系統就會關閉或重新開機 (無法判斷發生的事件) 。

意義
ENDSESSION_CLOSEAPP
0x1
如果 wParamTRUE,應用程式必須關閉。 任何資料應該會自動儲存,而不提示使用者 (以取得詳細資訊,請參閱) 。 當應用程式使用需要取代的檔案、必須服務系統或系統資源耗盡時,重新開機管理員就會傳送此訊息。 如果應用程式已使用 RegisterApplicationRestart 函式註冊重新開機,將會重新開機。 如需詳細資訊,請參閱 應用程式的指導方針
如果 wParamFALSE,應用程式不應該關閉。
ENDSESSION_CRITICAL
0x40000000
應用程式會強制關閉。
ENDSESSION_LOGOFF
0x80000000
使用者正在登出。 如需詳細資訊,請參閱 登出

 

請注意,此參數是位元遮罩。 若要測試此值,請使用位運算;請勿測試是否相等。

傳回值

如果應用程式處理此訊息,它應該會傳回零。

備註

具有未儲存資料的應用程式可以將資料儲存到暫存位置,並在下次應用程式啟動時加以還原。 建議應用程式經常儲存其資料和狀態;例如,在使用者起始的儲存作業之間自動儲存資料,以減少關閉時要儲存的資料量。

當會話結束時,應用程式不需要呼叫 DestroyWindowPostQuitMessage 函式。

規格需求

需求
最低支援的用戶端
Windows XP [傳統型應用程式 |UWP 應用程式]
最低支援的伺服器
Windows Server 2003 [傳統型應用程式 |UWP 應用程式]
標頭
WinUser.h (包括 Windows.h)

另請參閱

登出

關閉

DestroyWindow

PostQuitMessage

SetProcessShutdownParameters

WM_QUERYENDSESSION