Обнаружение того, виден ли экран входа в Windows пользователю в VB.NET

Привет, члены Stackru VB.NET,

После запуска следующего кода (который блокирует компьютер), какой код я должен применить, чтобы увидеть, успешно ли пользователь вошел в компьютер и что "Экран блокировки", который я так назвал, исчез?

Private Declare Function LockWorkStation Lib "user32.dll" () As Long

Private Function LockComputer()
    LockWorkStation()
End Function

После этого я назову "LockComputer", что мне делать, чтобы увидеть, исчез ли экран блокировки, вызванный этой функцией (скажем, через 2 минуты), или он по-прежнему запрашивает пароль у пользователя!

Спасибо, Акшит Соота

2 ответа

Решение

Посмотрите на это: http://msdn.microsoft.com/en-us/library/aa376875%28v=vs.85%29.aspx

Там написано: Нет функции, которую можно вызвать, чтобы определить, заблокирована ли рабочая станция.

Но:

Чтобы получать уведомления при входе пользователя в систему, используйте функцию WTSRegisterSessionNotification для получения сообщений WM_WTSSESSION_CHANGE. Вы можете использовать уведомления сеанса для отслеживания состояния рабочего стола, чтобы вы знали, возможно ли взаимодействие с пользователем.

Читали ли вы это в документации MSDN API LockWorkstation:

Вы не можете вызвать функцию, чтобы определить, заблокирована ли рабочая станция. Чтобы получать уведомления при входе пользователя в систему, используйте функцию WTSRegisterSessionNotification для получения сообщений WM_WTSSESSION_CHANGE.

Другие вопросы по тегам