WM_POWERBROADCAST 消息
根据网络资料整理而来,整体意义不大,因为在 Windows Vista以上系统,此消息只对顶层窗口广播,不会对UAC控制下的程序广播,所以很麻烦。
-
电源管理 事件 。 此 参数 可以 是 下列 事件 标识符 之一 。
-
事件 意义 -
PBT_APMPOWERSTATUSCHANGE
10 (0xA)
电源 状态 已 更改 。-
PBT_APMRESUMEAUTOMATIC
18 (0x12)
操作系统自动从低功耗状态恢复。每次系统恢复时会发送此消息。
-
PBT_APMRESUMESUSPEND
7 (0x7)
操作系统从低功耗状态恢复时,如果有用户正在输入,那么在PBT_APMRESUMEAUTOMATIC 后发送此消息。
远程唤醒,不会显示此消息。鼠标或键盘唤醒,会显示此消息。
-
PBT_APMSUSPEND
4 (0x4)
系统 正在 暂停 操作 。-
PBT_POWERSETTINGCHANGE
32787 (0x8013)
电源设置更改事件已收到。
-
wParam参数
备注
每当
系统
恢复
,
系统
总是
发送
PBT_APMRESUMEAUTOMATIC
消息
。
如果
系统
恢复
在
响应
用户
输入
,
如
按下
一个
键
,
系统
也
将发送
PBT_APMRESUMEAUTOMATIC
后
发送
PBT_APMRESUMESUSPEND
消息
。
WM_POWERBROADCAST
消息
不
区分
不同
的
低功耗
状态
。
应用
程序
可以
决定
只
系统
正在
进入
或
已经
恢复
从
低功耗
状态
;
它
无法
确定
具体
的
电源
状态
。
系统
在
Windows
系统
事件
日志
中
记录
有关
电源
状态
转换
的
详细信息
。
若要
防止
系统
过渡
到
低功耗
状态
,
在
Windows
Vista
中
,
应用程序
必须
调用
SetThreadExecutionState
来
通知
系统
,
它
是
在
使用
中
。
在Windows Vista以上操作系统不支持以下消息
:
PBT_APMQUERYSTANDBY
PBT_APMQUERYSTANDBYFAILED
PBT_APMSTANDBY
PBT_APMRESUMESTANDBY
上面是MSDN资料,实际个人喜欢直接用程序来获取,代码如下:
protected
procedure QUERYSUSPEND(var Message: TMessage); message WM_POWERBROADCAST ;
procedure TForm1.QUERYSUSPEND(var Message: TMessage);
begin
ListBox1.Items.Add(Format('$%.8x,$%.8x', [Message.WParam,Message.LParam]));
inherited;
// if(Message.WParam=PBT_APMQUERYSUSPEND)
// Message.Result := 0;
end;
WM_POWER 消息
WM_POWER
消息
已经
过时
了
。
它
只
提供
16 位 Windows 的
应用程序
的
兼容性
。
现在的应用程序
应
使用
WM_POWERBROADCAST
消息
。