Wie erkennen Sie, wenn der Benutzer den Bildschirm in Windows 7 gesperrt / entsperrt?
Ich fand diese Frage hat eine Antwort für C #, aber ich würde es gerne in Delphi 2009 verwenden. Ich denke, es gibt einige Windows-Nachrichten (wie diese ), die die Arbeit machen könnten. Dies ist der Code, den ich ausprobiert habe, aber es hat nicht funktioniert:
%Vor% Wenn FormCreate
ausgeführt wird, gibt WTSRegisterSessionNotification
false
zurück und der letzte Betriebssystemfehler gibt Ungültiger Parameter zurück.
Ihr Code funktioniert nicht, weil Sie ihn nicht korrekt implementiert haben.
Sie deklarieren WTSRegisterSessionNotification()
und WTSUnRegisterSessionNotification()
nicht korrekt.
Sie berücksichtigen auch nicht die Möglichkeit, dass die VCL das Formularfenster während der Lebensdauer des Formularobjekts dynamisch neu erstellt. Also, selbst wenn WTSRegisterSessionNotification()
erfolgreich waren, können Sie Ihre Registrierung verlieren und es nicht realisieren.
Versuchen Sie es stattdessen:
%Vor%Denken Sie darüber nach, den Code so zu schreiben, dass er sich nicht auf das Fensterwiederherstellungsverhalten der VCL verlässt. Sie können ein dediziertes Fenster für die Überwachung der Sitzungsänderungen zuweisen:
%Vor%Tags und Links windows delphi winapi delphi-2009