PBT_APMQUERYSUSPEND 事件

可在“要求”部分中指定的操作系统中使用 PBT_APMQUERYSUSPEND。 Windows Vista 中已移除对此事件的支持。 请改用 SetThreadExecutionState。]

请求挂起计算机的权限。 授予权限的应用程序应在返回之前执行挂起的准备。

窗口会通过 WM_POWERBROADCAST 消息接收此事件。 wParam 和 lParam 参数的设置如下所述。

LRESULT 
CALLBACK 
WindowProc( HWND   hwnd,    // handle to window
            UINT   uMsg,    // WM_POWERBROADCAST
            WPARAM wParam,  // PBT_APMQUERYSUSPEND
            LPARAM lParam); // action flags

参数

hwnd

窗口的句柄。

uMsg

含义
WM_POWERBROADCAST
536 (0x218)
消息标识符。

wParam

含义
PBT_APMQUERYSUSPEND
0 (0x0)
事件标识符。

lParam

操作标志。 如果位 0 为 1,则应用程序可以提示用户以说明如何准备挂起;否则,应用程序必须在没有用户交互的情况下进行准备。 所有其他位值会保留。

返回值

返回 TRUE 以授予挂起请求。 要拒绝请求,请返回 BROADCAST_QUERY_DENY

备注

应用程序应尽快处理此事件。 仅当设置了 Flags 参数中的位 0 时,应用程序才能提示用户以说明如何准备挂起。 但如果由于用户正在关闭笔记本电脑盖而发出此消息,则无法提示用户。 应用程序应该尊重用户在关闭笔记本电脑盖或按下电源按钮时的预期行为,并允许转换成功。

系统将允许应用程序使用大约 20 秒的时间来移除从应用程序的消息队列发送 PBT_APMQUERYSUSPEND 事件的 WM_POWERBROADCAST 消息。 如果应用程序在不到 20 秒内未从队列中移除消息,系统将假定应用程序处于非响应状态,并且应用程序同意了睡眠请求。 未处理其消息队列的应用程序可能会中断其操作。 从消息队列中移除消息后,应用程序可能需要尽可能多的时间来执行任何所需的操作,然后才能进入睡眠状态。 此时,应执行可能需要超过 20 秒时间的任何操作,因为系统在 PBT_APMSUSPEND 处理期间仅允许在 20 秒内完成操作

要求

要求
最低受支持的客户端
Windows XP [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
客户端支持结束
Windows XP
结束服务器支持
Windows Server 2003
Header
Winuser.h(包括 Windows.h)

另请参阅