Можно ли определить текущего пользователя из глобальной ловушки клавиатуры в .NET? - PullRequest
3 голосов
/ 23 сентября 2008

Я хочу создать клавиатуру и мышь, которые будут запускаться как служба Windows. Я хочу отслеживать активность различных пользователей, которые используют систему в течение дня. то есть, какие пользователи активны и в какое время.

Можно ли определить, какой пользователь будет получать события? (Служба будет работать как отдельный пользователь, поэтому getCurrentUser не подходит)

Ответы [ 4 ]

1 голос
/ 23 сентября 2008

Нет, Environment.UserName не работает - процедура подключения не вызывается в контексте получателя ввода.

Действительно, я думаю, что это невозможно - хуки _LL, которые вы без сомнения используете при использовании .NET, являются хуками низкого уровня. Мне кажется, что они выполняются задолго до того, как Windows даже определит, какой рабочий стол / приложение получит событие. Возможно, я ошибаюсь - я никогда не использовал ловушки _LL самостоятельно.

0 голосов
/ 23 сентября 2008

Другой способ:

Функция WTSGetActiveConsoleSessionId позволяет получить идентификатор активного сеанса. Бетон:

Функция WTSGetActiveConsoleSessionId извлекает сеанс служб терминалов, который в данный момент подключен к физической консоли. Физическая консоль - это монитор, клавиатура и мышь. Обратите внимание, что для успешного выполнения этой функции необязательно запускать службы терминалов.

Затем вы можете использовать WTSQueryUserToken для получения токена пользователя, тогда вы сможете получить информацию о пользователе с помощью токена.

Это функции из служб терминалов, но в документации сказано:

Обратите внимание, что для успешного выполнения этой функции необязательно запускать службы терминалов.

Так что я думаю, это может быть путь.

0 голосов
/ 23 сентября 2008

Я не знаю об этих хуках - они получают события от клавиатур удаленного рабочего стола? Если они получают только локальную клавиатуру, то я думаю, что вам нужно найти владельца WinSta0.

0 голосов
/ 23 сентября 2008

@ TcKs - А как насчет быстрого переключения пользователей?

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