Как отличить реальный ввод с клавиатуры или мыши от ввода команд, например «SendInput», используя hRawInput - PullRequest
1 голос
/ 21 сентября 2019

Внимательно посмотрев на spy ++ в visual studio, я обнаружил hRawInput при наборе текста на клавиатуре.

И обнаружил, что это значение постоянно меняется при каждом вводе клавиши.Возможно, это значение означает дескриптор того, что называется RawInput, и я думаю, что значение самого hRawInput не имеет смысла.

Но при приближении к RawInput данным через этот дескриптор есть ли способ отличитьввод с помощью SendInput и ввод с клавиатуры?Если какой-либо метод существует, как сделать эти два элемента неразличимыми?

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

Однако SetWindowsHookEx - это функция, которая используется для перехвата перемещения сообщений между очередью сообщений ОС и очередью сообщений приложения, но SendInput являетсяфункция, которая работает с аппаратной очередью, которая намного ниже этого уровня, поэтому я не понимаю, как ее можно различить.

Подводя итог, вопрос выглядит следующим образом.

  1. Используя hRawInput, Как отличить ввод с помощью SendInput между вводом с реального устройства.И я хочу знать, как получить rawInput данных данных через hRawInput входных данных, полученных с помощью SendInput или реального устройства.

  2. Хотя SetWindowsHookEx работает в очереди ОС - очередь приложенийи SendInput работает в аппаратной очереди. Как различить ввод с помощью SendInput между вводом с реального устройства.

...