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
如果 wParam 为 TRUE,则必须关闭应用程序。 任何数据都应自动保存,而不提示用户 (有关详细信息,请参阅备注) 。 当应用程序使用需要替换的文件、必须为系统提供服务或系统资源耗尽时,重启管理器会发送此消息。 如果应用程序已注册使用 RegisterApplicationRestart 函数进行重启,则会重启。 有关详细信息,请参阅 应用程序指南。
如果 wParam 为 FALSE,则应用程序不应关闭。- ENDSESSION_CRITICAL
- 0x40000000
应用程序被强制关闭。 - ENDSESSION_LOGOFF
- 0x80000000
用户正在注销。 有关详细信息,请参阅 Logging Off。 请注意,此参数是位掩码。 若要测试此值,请使用位运算;不要测试是否相等。
返回值
如果应用程序处理此消息,则它应返回零。
备注
具有未保存数据的应用程序可以将数据保存到临时位置,并在下次启动应用程序时将其还原。 建议应用程序经常保存其数据和状态;例如,在用户启动的保存操作之间自动保存数据,以减少关机时要保存的数据量。
会话结束后,应用程序无需调用 DestroyWindow 或 PostQuitMessage 函数。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP [桌面应用 |UWP 应用] |
最低受支持的服务器 |
Windows Server 2003 [桌面应用 |UWP 应用] |
标头 |
|
另请参阅