![]() |
Bildschirmschoner verhindern
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 |
Re: Bildschirmschoner verhindern
|
Re: Bildschirmschoner verhindern
danke ... aber richtig verstehen tu ich das nicht ....
Gruß Mister X |
Re: Bildschirmschoner verhindern
|
Re: Bildschirmschoner verhindern
meinst du das mit
Delphi-Quellcode:
oder das andere?
const
SSON = 1; SSOFF = 0; begin SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, SSOFF, nil, 0); end; 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 |
Re: Bildschirmschoner verhindern
Um den Bildschirmschoner zu deaktivieren musst du folgendes coden:
Delphi-Quellcode:
Und um ihn wieder zu aktivieren:
procedure TForm1.FormCreate(Sender: TObject);
begin SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, nil, 0); end;
Delphi-Quellcode:
Mfg st0rm
procedure TForm1.FormDestroy(Sender: TObject);
begin SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, nil, 0); end; |
Re: Bildschirmschoner verhindern
Er moechte das der Bildschirmschoner nicht anspringt solange sein Programm laeuft.
Damit ist dieser Code von Marabu der Richtige:
Delphi-Quellcode:
Windows sendet jedesmal wenn der Screensaver anspringen soll eine WMSYSCOMMAND mit Parameter SC_SCREENSAVE an alle Applikationen.
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; 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. |
Re: Bildschirmschoner verhindern
Da es mit OnMessage nicht geht, muss man eine Message-Methode schreiben.
Deklariert in der Hauptform:
Delphi-Quellcode:
Damit sollte es dann hinhauen.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz