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