Erkennen, wenn Benutzer in Windows 7 mit Delphi den Bildschirm sperren / entsperren

8

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.

    
Alisson 31.08.2017, 18:47
quelle

1 Antwort

11

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%     
Remy Lebeau 31.08.2017, 20:31
quelle

Tags und Links