检测系统由休眠或睡眠恢复

编程知识 更新时间:2023-04-16 05:26:29

有时候我们经常会使用到Win系统的休眠或睡眠,从而让系统再次启动时能快速恢复之前的使用状态。

而我们自己做程序时,有时候会因为休眠或睡眠导致程序的暂停运行或其他因需要处理的逻辑。为此,我们需要让程序知道已由休眠或睡眠唤醒并启动完成。

这里需要用到Win系统的电源管理消息:WM_POWERBROADCAST 消息。
WM_POWERBROADCAST 消息不区分不同的低功耗状态 。 应用程序可以决定只系统正在进入或已经恢复从低功耗状态; 它无法确定具体的电源状态。系统在 Windows 系统事件日志中记录有关电源状态转换的详细信息 。

电源管理事件。wParam 此参数可以是以下事件标识符之一。

事件含义
PBT_APMPOWERSTATUSCHANGE 10(0xA)电源状态已更改。
PBT_APMRESUMEAUTOMATIC 18(0x12)操作将从低功耗状态自动恢复。每次系统恢复时都会发送此消息。
PBT_APMRESUMESUSPEND 7(0x7)从低功耗状态恢复运行。如果恢复是由用户输入(例如按键)触发的,则此消息在PBT_APMRESUMEAUTOMATIC之后发送。
PBT_APMSUSPEND 4(0x4)系统正在暂停操作。
PBT_POWERSETTINGCHANGE 32787(0x8013)收到电源设置更改事件。

Delphi 增加如下过程

procedure WMPowerBroadCast(var msg: TMessage);message WM_POWERBROADCAST;//监听Power广播消息

然后实现过程内容

procedure TForm_Main.WMPowerBroadCast(var msg: TMessage);
begin
  //检测操作系统自动从低功耗状态恢复。 休眠后开机
  if (msg.Msg=WM_POWERBROADCAST) and (msg.WParam=PBT_APMRESUMEAUTOMATIC) then
  begin
  // .....  需要处理的业务逻辑
  end;
end;

在Windows Vista以上操作系统不支持以下消息 :

PBT_APMQUERYSTANDBY
PBT_APMQUERYSTANDBYFAILED
PBT_APMSTANDBY
PBT_APMRESUMESTANDBY

更多推荐

检测系统由休眠或睡眠恢复

本文发布于:2023-04-13 03:37:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/d7017c70035019cfbc7a97fa54569322.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:检测系统   睡眠

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 71864文章数
  • 14阅读数
  • 0评论数