Перехват и игнорирование события клавиатуры в Windows 7 32bit - PullRequest
1 голос
/ 19 марта 2010

У моего оборудования есть проблема, время от времени он отправляет «keydown», за которым следует событие «keyup»:

нажатие клавиши: Нет LButton, OemClear 255

keyup: Нет LButton, OemClear 255

нажатие клавиши: Нет LButton, OemClear 255

keyup: Нет LButton, OemClear 255

В Windows это происходит примерно раз в 1 или 2 секунды.

В целом это не влияет на большинство приложений, поскольку этот ключ не пригоден для печати. Я думаю, что это специальная функциональная клавиша, например, мультимедийная клавиша или что-то в этом роде. Это ничего не делает.

Но в некоторых приложениях, которые СЛУШАЮТ на keydown и keyup, я получаю неожиданное поведение.

Вопрос : есть ли способ перехватить эти 2 события клавиатуры в Windows (для всех приложений и для самой Windows) и заставить ОС их игнорировать?

Это действительно важно для меня, если вы можете придумать какое-нибудь решение, я буду вечно благодарен.

1 Ответ

1 голос
/ 19 марта 2010

Вы можете написать небольшое приложение, которое использует RegisterHotKey , чтобы зарегистрировать это нажатие клавиши как системную горячую клавишу. Затем Windows превратит это нажатие в сообщение WM_HOTKEY в окне вашего приложения.

Это заставит ваше приложение запускать немного кода раз в секунду или около того, что на самом деле не идеально, но, возможно, лучше, чем альтернатива.

Дескриптор окна должен принадлежать вашему приложению, но он не должен быть видимым или очень большим. Горячая клавиша является глобальной, поэтому она немного похожа на установку перемычки между клавиатурой и другими приложениями.

...