Dans certain cas la mise en veille de la machine peut rendre impossible l'exécution d'un traitement programmé. Il convient donc dans ce cas d'empêcher le système de se mettre en veille. Lorsque le système se charge de placer la machine en veille, il envoie le message WM_POWERBROADCAST à toutes les applications actives. Ces applications pouvant ou non traiter ce message. Voici sa mise en oeuvre :
- Code:
-
type
TForm1 = class(TForm)
private
{ Déclarations privées }
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;
end.
Ainsi, dès que votre application recoit le message
WM_POWERBROADCAST, la procédure WMPowerBroadcast est appelée et informe le système de ne pas placer la machine en veille. Le système réitérera cette demande de mise en veille ultérieurement.