Einzelnen Beitrag anzeigen

Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#1

Bildschirmschoner unterdrücken

  Alt 31. Jul 2006, 12:06
Um einen Bildschirmschoner (oder auch Screensaver) zu unterdrücken, hat marabu hier bzw. hier die Lösung gepostet.
Eine Verbesserung von Robert Marquardt stammt von hier.


Methode 1
Diese Methode schaltet den Bildschirmschoner über SystemParametersInfo ein bzw. aus:

Delphi-Quellcode:
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, ***, nil, 0);
  // Statt *** einsetzen:
  // 1 für AN
  // 0 für AUS
Hier ist wichtig, dass später wieder der Ausgangszustand wiederhergestellt wird, z.B. beim Beenden des Programms.


Methode 2
Die andere Methode funktioniert über Messages, hierzu muss das Fenster jedoch den Fokus besitzen:

Delphi-Quellcode:
// Mit folgender Zeile wird die Prozedur im Hauptforumlar deklariert:
  procedure WMSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;

// Und hier dann das Unterdrücken:
procedure TMainForm.WMSysCommand(var Msg: TMessage);
begin
  if (Msg.wParam = SC_SCREENSAVE) then
    Msg.Result := 1
  else
    inherited;
end;
Eine Beschreibung dieses Verfahrens und der Vorteil gegenüber dem ersten liefert Robert Marquardt hier:

Zitat von Robert Marquardt:
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.

Methode 3
Wer die JEDIs installiert hat, kann auch ganz einfach den JvScreenSaveSuppressor (aus JvSystem) nutzen .

[edit=fkerber]kleinen Schreibfehler im Code korrigiert. Mfg, fkerber[/edit]
[edit=ManuMF]richtiger Name der Komponente[/edit]
[edit=ManuMF]Code von Methode 2 korrigiert[/edit]
[edit=Matze]Hinweis zu Methode 2 hinzugefügt. Mfg, Matze[/edit]
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat