Hallo,
ich befürchte zwar, dass mir niemand diese Frage beantworten kann, aber einen Versuch ist es vielleicht doch wert.
Meine Anwendung lässt sich über einen Joystick steuern und auch beenden. Das Starten des Bildschirmschoners unterdrücke ich erfolgreich mit folgenden Zeilen Code:
Delphi-Quellcode:
procedure TForm1.WMSysCommand(var Msg: TMessage);
begin
IF (Msg.wParam = SC_SCREENSAVE) OR (Msg.WParam = SC_MONITORPOWER) then
Msg.Result := 1 else
inherited;
end;
Sobald ich jedoch meine Anwendung beende, startet der Bildschirmschoner, da das Timeout abgelaufen ist und nicht zurückgesetzt wird. Ein Simulieren des Tastendrucks oder einer Mouse-Bewegung bringt leider nicht den gewünschten Erfolg, und zwar anscheinend aus folgendem Grund:
Zitat:
SPI_GETBLOCKSENDINPUTRESETS
Retrieves a BOOL indicating if 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.
Leider kennt mein Delphi die Konstante SPI_SETBLOCKSENDINPUTRESETS, mit der ich wohl diese Einstellung ändern kann, nicht.
P.S.: In der Online-Hilfe von Delphi steht als Konstante SPI_SETBLOCKSENDINPUTREQUESTS, ich bin mir jedoch sehr sicher, dass das ein Schreibfehler ist.
Hat vielleicht jemand einen Tipp für mich? Nutze Delphi 2005
PE und Vista. Kein gravierendes Problem, aber einfach nervig, wenn ich die Anwendung beende und der Bildschirmschoner springt an.
Viele Grüße