Impedir la suspensión del equipo
Artículo por Club Developers · 01 marzo 2006
4719 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:
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.
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
type TForm1 = class(TForm) private public procedure WMPowerBroadcast(var Msg: TMessage); message WM_POWERBROADCAST; end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMPowerBroadcast(var Msg: TMessage); const PBT_APMQUERYSUSPEND = $0000; begin if Msg.wParam = PBT_APMQUERYSUSPEND then Msg.Result := BROADCAST_QUERY_DENY; 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.