AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirmschoner unterdrücken

Ein Thema von ManuMF · begonnen am 31. Jul 2006
Antwort Antwort
Benutzerbild von ManuMF
ManuMF

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

Bildschirmschoner unterdrücken

  Alt 31. Jul 2006, 11: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
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz