AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Timer des Bildschirmschoners zurücksetzen
Thema durchsuchen
Ansicht
Themen-Optionen

Timer des Bildschirmschoners zurücksetzen

Ein Thema von Breager · begonnen am 16. Aug 2012 · letzter Beitrag vom 18. Aug 2012
Antwort Antwort
hathor
(Gast)

n/a Beiträge
 
#1

AW: Timer des Bildschirmschoners zurücksetzen

  Alt 16. Aug 2012, 18:34
http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

Lastinput muss man resetten:

keybd_event(0, 0, 0, 0); //Reset LastInput

Geändert von hathor (16. Aug 2012 um 19:01 Uhr)
  Mit Zitat antworten Zitat
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#2

AW: Timer des Bildschirmschoners zurücksetzen

  Alt 17. Aug 2012, 00:20
Vielen Dank für Eure Antworten!

Das alleinige Resetten von LastInput funktioniert bei mir nicht, der Bildschirmschoner springt trotzdem beim Beenden der Anwendung an.

Zitat:
SPI_GETBLOCKSENDINPUTRESETS 0x1026 :
Retrieves a BOOL indicating whether an application can reset the screensaver's timer by calling the SendInput function to simulate keyboard or mouse input. The pvParam parameter must point to a BOOL variable that receives TRUE if the simulated input will be blocked, or FALSE otherwise.
Folgender Code steht nun bei mir im OnClose-Ereignis der Anwendung:
Delphi-Quellcode:
Const
  SPI_GETBLOCKSENDINPUTRESETS = $1026;
  SPI_SETBLOCKSENDINPUTRESETS = $1027;
Var
  flag :Boolean;
begin

SystemParametersInfo(SPI_GETBLOCKSENDINPUTRESETS, 0,@flag, 0);
SystemParametersInfo(SPI_SETBLOCKSENDINPUTRESETS, Integer(false),nil, 0) ;

keybd_event(0, 0, 0, 0);

SystemParametersInfo(SPI_SETBLOCKSENDINPUTRESETS, Integer(flag),nil,0) ;

end;
Es funktioniert, und das ist ersteinmal positiv. Merkwürdig ist das ganze jedoch schon, denn es funktioniert genauso gut, wenn ich den Wert von SPI_SETBLOCKSENDINPUTRESETS auf True setze und manchmal sogar, wenn ich keinen Code im OnClose-Ereignis stehen habe Das witzige ist, dass der Bildschirmschoner auch nach einer Weile startet, wenn ich ihn mit SPI_SETSCREENSAVEACTIVE deaktiviere

Geändert von Breager (17. Aug 2012 um 00:39 Uhr)
  Mit Zitat antworten Zitat
Breager

Registriert seit: 18. Feb 2012
40 Beiträge
 
#3

AW: Timer des Bildschirmschoners zurücksetzen

  Alt 18. Aug 2012, 23:31
Vielen dank nochmal an Euch beide! Ziemlich nervig, das zu testen, da ich immer eine gewisse Zeit warten musste. Das Problem ist nun einfach durch ein Setzen des entsprechenden Wertes auf TRUE reproduzierbar. Der Vollständigkeit halber, wie ich das ganze nun letzendlich gelöst habe. Ich denke diese Methode ist besser, als den Bildschirmschoner zu deaktivieren.

Delphi-Quellcode:
public
   procedure WMSysCommand(var Msg: TMessage); message WM_SYSCOMMAND;
...
procedure TForm1.WMSysCommand(var Msg: TMessage);
begin
  IF (Msg.wParam = SC_SCREENSAVE) OR (Msg.WParam = SC_MONITORPOWER) then
      Msg.Result := 1 ELSE
      inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
Const
  SPI_GETBLOCKSENDINPUTRESETS = $1026;
  SPI_SETBLOCKSENDINPUTRESETS = $1027;
Var
  flag :Boolean;
begin
SystemParametersInfo(SPI_GETBLOCKSENDINPUTRESETS, 0,@flag, 0) ;

IF flag then
   SystemParametersInfo(SPI_SETBLOCKSENDINPUTRESETS, Integer(false),nil, 0);

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 keybd_event(0, 0, 0, 0);
end;
Die IF-Abfrage ist natürlich nicht zwingend erforderlich.

Viele Grüße
  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 03:58 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