AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildschirmschoner verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Bildschirmschoner verhindern

Ein Thema von Mister X · begonnen am 11. Sep 2005 · letzter Beitrag vom 1. Aug 2006
Antwort Antwort
Mister X

Registriert seit: 7. Apr 2005
16 Beiträge
 
#1

Bildschirmschoner verhindern

  Alt 11. Sep 2005, 16:12
Hallo,

wie kann ich Windows sagen, das kein Bildschirmschoner gezeigt wird, während mein Programm läuft?

Also sowas wie beim WindowsMediaPlayer ...

Gruß
Mister X-Ray
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bildschirmschoner verhindern

  Alt 11. Sep 2005, 16:14
Hai,

das hatten wir glaube ich eben erst in diesem Thread.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Mister X

Registriert seit: 7. Apr 2005
16 Beiträge
 
#3

Re: Bildschirmschoner verhindern

  Alt 11. Sep 2005, 16:34
danke ... aber richtig verstehen tu ich das nicht ....

Gruß
Mister X
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Bildschirmschoner verhindern

  Alt 11. Sep 2005, 16:43
Zitat von Mister X:
danke ... aber richtig verstehen tu ich das nicht ....

Verwende den Code von marabu aus dem Thread. Wenn Du jetzt im Delphi-Referenz durchsuchenOnCreate deiner Hauptform den Bildschirmschoner deaktivierst und ihn dann im Delphi-Referenz durchsuchenOnDestroy wieder aktivierst solltest Du es schon haben wie Du möchtest.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Mister X

Registriert seit: 7. Apr 2005
16 Beiträge
 
#5

Re: Bildschirmschoner verhindern

  Alt 11. Sep 2005, 17:10
meinst du das mit

Delphi-Quellcode:
const
  SSON = 1;
  SSOFF = 0;
begin
  SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, SSOFF, nil, 0);
end;
oder das andere?

zum obigen habe ich eine Frage:
wie bekomme ich den Bildschirmschoner dann wieder aktiv? mit SSON = 0 und SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, SSON, nil, 0); oder wie?

Guß
Mister X
  Mit Zitat antworten Zitat
Benutzerbild von storm1988
storm1988

Registriert seit: 4. Aug 2005
Ort: Salzburg
91 Beiträge
 
Delphi 6 Professional
 
#6

Re: Bildschirmschoner verhindern

  Alt 11. Sep 2005, 17:24
Um den Bildschirmschoner zu deaktivieren musst du folgendes coden:


Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
 SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, 0);
end;
Und um ihn wieder zu aktivieren:

Delphi-Quellcode:
procedure TForm1.FormDestroy(Sender: TObject);
begin
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, nil, 0);
end;
Mfg st0rm
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Bildschirmschoner verhindern

  Alt 11. Sep 2005, 18:57
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.
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#8

Re: Bildschirmschoner verhindern

  Alt 1. Aug 2006, 06:32
Da es mit OnMessage nicht geht, muss man eine Message-Methode schreiben.
Deklariert in der Hauptform:
Delphi-Quellcode:
procedure WMSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;


procedure WMSysCommand(var Msg: TMessage);
begin
  if Msg.wParam = SC_SCREENSAVE then
    Msg.Result := 1
  else
    inherited;
end;
Damit sollte es dann hinhauen.
  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 18:05 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