Er moechte das der Bildschirmschoner nicht anspringt solange sein Programm laeuft.
Damit ist dieser Code von Marabu der Richtige:
Delphi-Quellcode:
procedure TMainForm.AppMessage(var Msg: TMsg; var Handled: boolean);
begin
if (Msg.Message = WM_SYSCOMMAND) and (Msg.wParam = SC_SCREENSAVE) then
begin
Handled := true;
Msg.Result := 1;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
Application.OnMessage := AppMessage;
end;
Windows sendet jedesmal wenn der Screensaver anspringen soll eine WMSYSCOMMAND mit Parameter SC_SCREENSAVE an alle Applikationen.
Antwortet man mit der 1 in Msg.Result, dann startet Windows den Screensaver nicht.
Um OnDestroy muss man sich nicht kuemmern, da die Applikation ja dann sowieso nicht mehr da ist um zu antworten.
Die Loesung den Screensaver per SystemParametersInfo zu deaktivieren ist ein bischen problematisch, da das Programm ja abstuerzen kann und dann den Screensaver nicht mehr reaktiviert.