WM_ENDSESSION消息

系统处理WM_QUERYENDSESSION消息的结果后,会将WM_ENDSESSION消息发送到应用程序。 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
用户正在注销。 有关详细信息,请参阅 Logging Off

 

请注意,此参数是位掩码。 若要测试此值,请使用位运算;不要测试是否相等。

返回值

如果应用程序处理此消息,则它应返回零。

备注

具有未保存数据的应用程序可以将数据保存到临时位置,并在下次启动应用程序时将其还原。 建议应用程序经常保存其数据和状态;例如,在用户启动的保存操作之间自动保存数据,以减少关机时要保存的数据量。

会话结束后,应用程序无需调用 DestroyWindowPostQuitMessage 函数。

要求

要求
最低受支持的客户端
Windows XP [桌面应用 |UWP 应用]
最低受支持的服务器
Windows Server 2003 [桌面应用 |UWP 应用]
标头
WinUser.h (包括 Windows.h)

另请参阅

注销

关闭

DestroyWindow

PostQuitMessage

SetProcessShutdownParameters

WM_QUERYENDSESSION