Я хотел бы написать приложение, которое отключает определенные клавиши на клавиатуре во время работы. В частности, меня интересуют клавиши, которые могут сделать приложение не в фокусе (например, ALT + TAB, WinKey, Ctrl + Shift + Esc и т. Д.). Это необходимо для того, чтобы младенцы / животные сильно били по клавиатуре. :)
Моей первой идеей было использование SetWindowsHookEx () , однако я столкнулся с проблемой. Поскольку мне нужен глобальный хук, процедура должна находиться в .DLL, который вставляется во все активные приложения. Но .DLL может быть как 64-битным, так и 32-битным, а не обоими. И в 64-битной системе есть оба типа приложений. Тогда я предполагаю, что мне нужно написать две копии хука .DLL - одну для 32-битной, а другую для 64-битной. И затем мне также нужно будет запустить две копии приложения, потому что приложение сначала должно загрузить саму DLL, прежде чем оно сможет передать ее на SetWindowsHookEx()
.
Звучит довольно неуклюже и неуклюже. Возможно, есть лучший способ? Или, может быть, я что-то неправильно понял?
Обратите внимание, что я все еще хочу, чтобы мышь работала и "простые" буквенные клавиши тоже, поэтому BlockInput () не будет работать.
Добавлено: Я могу разрабатывать как на .NET (C # / VB), так и на C / C ++ и WinAPI. Я ожидаю, что последний будет более подходящим.