Блокировать нажатия клавиш с определенной клавиатуры

Я хотел бы заблокировать все нажатия клавиш, поступающие с определенной клавиатуры (идентифицированной по ее HID/имени, поэтому я думаю, что это низкоуровневые вещи), прежде чем они достигнут целевого приложения. Но я все еще использую эту отключенную клавиатуру (я получаю нажатия клавиш). Я думаю, мне нужен хук приложения, но я не знаю, как это сделать. Может быть, вы дадите мне какую-нибудь полезную ссылку?

С уважением,

РЕДАКТИРОВАТЬ:

Я думаю, что мне нужен низкоуровневый хук, потому что общий хук (я имею в виду перехват всех существующих окон и потоков) недоступен в .net framework, что касается пользовательского пространства. Кроме того, я использую RAWINPUT для получения набранных клавиш с клавиатуры. Итак, если я создам хук для блокировки нажатия клавиш с определенного устройства, может ли хук также заблокировать RAWINPUT?


person Louisbob    schedule 14.10.2012    source источник
comment
Я предполагаю, что setWindowHookEx предназначен только для определенного дескриптора/процесса. Я хочу всегда зацеплять процесс, сфокусированный на самом верху. Может быть, я могу попытаться получить какое-то событие изменения фокуса, но я не нашел никакой хорошей информации об этом.   -  person Louisbob    schedule 15.10.2012
comment
Эта программа, кажется, делает то, что я хочу, но я не могу понять, как это сделал программист. nate.dynalias.net/dev/keyboardredirector.rails   -  person Louisbob    schedule 15.10.2012


Ответы (1)


Приложение может различать источник ввода по получение необработанных входных данных. Однако приложение должно обрабатывать WM_INPUT вместо WM_CHAR, WM_MOUSEMOVE или WM_APPCOMMAND.

person Sheng Jiang 蒋晟    schedule 15.10.2012
comment
Я не уверен, что вы поняли мой вопрос. Что я пытаюсь сделать, так это запретить сфокусированному окну (так что это не мое приложение) получать данные с определенного устройства (например, клавиатуры). Я почти уверен, что мне нужно зацепить сфокусированное окно. - person Louisbob; 16.10.2012