Impedir la suspensión del equipo

4396 vistas

En algunos casos, la suspensión del equipo puede hacer que algunas tareas programadas no se lleguen a ejecutar. En estos casos es necesario impedir que al sistema que se suspenda.

Cuando el sistema quiere suspender el equipo envía el mensaje WM_POWERBROADCAST a todas las aplicaciones activas y éstas pueden o no tratar el mensaje. Veamos cómo tratarlo:



delphi
  1. type
  2.   TForm1 = class(TForm)
  3.   private
  4.   public
  5.     procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST;
  6.   end;
  7.  
  8. var
  9.   Form1: TForm1;
  10.  
  11. implementation
  12.  
  13. {$R *.dfm}
  14.  
  15. procedure TForm1.WMPowerBroadcast(var Msg: TMessage);
  16. const
  17.   PBT_APMQUERYSUSPEND = $0000;
  18. begin
  19.   if Msg.wParam = PBT_APMQUERYSUSPEND then
  20.     Msg.Result := BROADCAST_QUERY_DENY;
  21. end;



De esta manera, cuando la aplicación reciba el mensaje WM_POWERBROADCAST, se hará una llamada al procedimiento WMPowerBroadcast el cual informará al sistema de que no puede poner el sistema en suspensión.