Отслеживание выхода из спящего режима - Delphi

30 Августа 2017 NB
Печать

Отслеживание выхода из спящего режима - Delphi

    procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST;

Titmouse, процедура выполняется при получении программой сообщения WM_POWERBROADCAST

 

 

Можно примерно так:

 

type
  TForm1 = class(TForm)
  private
    procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST;
  public
    { Public declarations }
  end;
 
const
   PBT_APMSUSPEND = 4;
   PBT_APMRESUMESUSPEND = 7;
   PBT_APMRESUMEAUTOMATIC = 18;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.WMPowerBroadcast(var Msg: TMessage);
begin
  case Msg.wParam of
    PBT_APMSUSPEND: ;         // переход в спящий режим
    PBT_APMRESUMESUSPEND: ;   // выход из спящего режима, инициированный пользователем (например, нажата клавиша)
    PBT_APMRESUMEAUTOMATIC: ; // выход из спящего режима
  end;
end;

 

Titmouse, процедура выполняется при получении программой сообщения WM_POWERBROADCAST, то есть отдельно самому её нигде прописывать (вызывать ) не нужно.
Что касаемо самой процедуры, то в качестве параметра она получает одно из нескольких значений...

 

PBT_APMSUSPEND: ; * * * * // переход в спящий режим
* * PBT_APMRESUMESUSPEND: ; * // выход из спящего режима, инициированный пользователем (например, нажата клавиша)
* * PBT_APMRESUMEAUTOMATIC: ; // выход из спящего режима

 

выбираете нужное вам, например PBT_APMRESUMESUSPEND и пишите, что должно произойти, например

 

procedure TForm1.WMPowerBroadcast(var Msg: TMessage);
begin
  case Msg.wParam of
    ...
    PBT_APMRESUMESUSPEND:
       begin
        ShowMessage('Вышли из спящего режима');
        прочие действия...
       end; ;   
    ...
  end;
end;

 

Это полностью рабочий код.
Надо только добавить требуемую реакцию на соответствующие варианты сообщения.
Процедура "вызывается" операционной системой.