Есть ли способ определить, кто управляет мышью (и какой мышью) на ПК программным способом? Я недавно установил LogMeIn (logmein.com) и хотел узнать, возможно ли (1) сообщить в программе, нажата ли мышь или перемещена прямым пользователем или удаленным пользователем, (2) написать автономное программа, которая просто показывает события мыши (в любом приложении) и указывает, было ли событие мыши сгенерировано локальным или удаленным пользователем. Я немного знаком с хуками Win32, но не думаю, что они могут дать такую информацию. Что касается (1), это будет похоже на общий запрос. То есть «Разрешить пользователю выполнять нажатия кнопок, связанные с изменением пароля, только если он локальный …» или что-то в этом роде.
Второстепенное значение (на самом деле просто академический интерес) имеет вопрос о том, использует ли локальный пользователь мышь или трекпад.
Спасибо,
Дейв
Вы можете подключить API устройства к окнам, из которых вы хотите получить информацию, тогда, если мышь перемещает, API, вероятно, не вызывается, когда пользователь перемещает мышь, но если logmein делает, то он, вероятно, вызывает некоторый WinAPI, подобный SetMousePointerPos.
С момента публикации я наткнулся на этот пост, который в основном отвечает на вопрос.
C # Получить дескриптор мыши (GetRawInputDeviceInfo)
Я бы добавил, что для тех из вас, кто хочет использовать WPF вместо WinForms (как в примере, приведенном выше), посмотрите ComponentDispatcher.ThreadFilterMessage (для WPF) или IMessageFilter (Windows Forms).
Я написал пару программ, основанных на вышеупомянутой публикации (одна из них в основном является публикацией выше с некоторыми незначительными добавлениями, а другая — WPF (в отличие от WinForms)). Если я смогу разобраться с GitHub, я выложу весь код и добавлю комментарий здесь. Но публикация выше определенно даст вам все, что вам нужно.