Как отключить выборочные клавиши на клавиатуре? - PullRequest
1 голос
/ 21 апреля 2010

Я хотел бы написать приложение, которое отключает определенные клавиши на клавиатуре во время работы. В частности, меня интересуют клавиши, которые могут сделать приложение не в фокусе (например, ALT + TAB, WinKey, Ctrl + Shift + Esc и т. Д.). Это необходимо для того, чтобы младенцы / животные сильно били по клавиатуре. :)

Моей первой идеей было использование SetWindowsHookEx () , однако я столкнулся с проблемой. Поскольку мне нужен глобальный хук, процедура должна находиться в .DLL, который вставляется во все активные приложения. Но .DLL может быть как 64-битным, так и 32-битным, а не обоими. И в 64-битной системе есть оба типа приложений. Тогда я предполагаю, что мне нужно написать две копии хука .DLL - одну для 32-битной, а другую для 64-битной. И затем мне также нужно будет запустить две копии приложения, потому что приложение сначала должно загрузить саму DLL, прежде чем оно сможет передать ее на SetWindowsHookEx().

Звучит довольно неуклюже и неуклюже. Возможно, есть лучший способ? Или, может быть, я что-то неправильно понял?

Обратите внимание, что я все еще хочу, чтобы мышь работала и "простые" буквенные клавиши тоже, поэтому BlockInput () не будет работать.

Добавлено: Я могу разрабатывать как на .NET (C # / VB), так и на C / C ++ и WinAPI. Я ожидаю, что последний будет более подходящим.

1 Ответ

1 голос
/ 22 апреля 2010

WH_KEYBOARD_LL запускается в контексте вашего процесса (на Win9x вам придется придерживаться обычного хука, но у вас нет проблемы с 64-битной версией)

...