Обнаружение того, виден ли экран входа в 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.