2009-04-20 25 views

Antwort

0

ehemalige Antworten sind falsch (Statusänderungen)
Verwenden WTS api (isLocked)
Er wird verwendet von Windows intern verwenden können. Siehe immer auf Win32 group für Windows Internal (MS)

13

Die Antwort hängt davon ab, ob Sie wissen wollen, ob der Desktop jetzt gesperrt ist, oder wenn Sie benachrichtigt werden möchten, wenn der Desktop wird gesperrt (und vermutlich entriegelt). Es hängt auch davon ab, wie Sie diese Benachrichtigungen erhalten möchten.

  • Wenn Sie wirklich ein einmaliger Test wollen, dann ist die Antwort hereOpenDesktop() und SwitchDesktop() verwendet einen Handelte auf den Standard-Desktop zu öffnen und aktivieren - wenn dies dann scheitert es ein gutes Zeichen, dass der Desktop gesperrt ist jetzt sofort.

  • Wenn Sie eine Benachrichtigung beim Sperren/Entsperren möchten und eine Anwendung im Benutzermodus mit einem Fenster und einer Nachrichtenpumpe haben, müssen Sie WTSRegisterSessionNotification() anrufen und die Nachricht WM_WTSSESSION_CHANGE abfangen.

  • Wenn Sie Benachrichtigungen und Sie als Windows-Dienst ausgeführt wird, dann können Sie für die Sitzungsänderungsereignisse registrieren, indem SetServiceStatus() Aufruf und das Hinzufügen von SERVICE_ACCEPT_SESSIONCHANGE-dwControlsAccepted in der Statusstruktur. Sie erhalten dann Rückrufe zu Ihrer eigenen Service Control HandlerEx() Funktion mit dwControl auf SERVICE_CONTROL_SESSIONCHANGE festgelegt.