Einzelnen Beitrag anzeigen

Breager

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

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