Проверка заблокированного / разблокированного сеанса и последний ввод - PullRequest
0 голосов
/ 06 августа 2020

Мне удалось получить все свои сеансы с помощью WTSEnumerateSessions, но я не могу понять, как заблокировать / разблокировать их статус и, если они разблокированы, получить время с момента последнего ввода. Есть какие-нибудь советы / помощь?

1 Ответ

2 голосов
/ 06 августа 2020

Чтобы получить состояние блокировки сеанса:

  • В Windows 7 и более поздних версиях вы можете использовать WTSQuerySessionInformation() с параметром WTSInfoClass, установленным на WTSSessionInfoEx.

  • В старых системах вам нужно будет отслеживать события блокировки / разблокировки в реальном времени, используя WTSRegisterSessionNotification() для получать уведомления WM_WTSSESSION_CHANGE, проверяя его wParam на наличие WTS_SESSION_LOCK и WTS_SESSION_UNLOCK кодов состояния.

Чтобы получить время последнего ввода сеанса:

  • В Vista SP1 и более поздних версиях вы можете использовать WTSQuerySessionInformation() с параметром WTSInfoClass, установленным на WTSSessionInfo.

  • В более старых системах вам нужно будет использовать CreateProcessAsUser() для запуска вспомогательного процесса внутри целевого сеанса, который затем может вызывать GetLastInputInfo() и передать эту информацию в основное приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...