Разница между WH_KEYBOARD и WH_KEYBOARD_LL? - программирование
Подтвердить что ты не робот

Разница между WH_KEYBOARD и WH_KEYBOARD_LL?

В чем разница между работой двух? Для WH_KEYBOARD_LL я прочитал, что он устанавливает процедуру крюка, которая контролирует низкоуровневые события ввода клавиатуры. Что подразумевается под низкоуровневыми событиями клавиатуры?

4b9b3361

Ответ 1

Мех, не сосредотачивайтесь слишком много на этом термине, он ничего не разъясняет. Там огромная разница между ними. WH_KEYBOARD_LL устанавливает крючок, который требует, чтобы обратный вызов был реализован в вашей собственной программе. И вы должны перекачать контур сообщения, чтобы Windows могла выполнять обратный вызов, когда он собирается отправить сообщение с клавиатуры. Это делает его очень легким для перехода.

WH_KEYBOARD работает совсем по-другому, для этого требуется DLL, которую можно безопасно вводить в зацепленные процессы. Что делает его, как известно, трудным для перехода, инъекции DLL, не влияя на процесс, непросто. Особенно в 64-битной операционной системе. Также не заботитесь о межпроцессном обмене, которое вам может понадобиться, если какой-либо другой процесс должен знать о нажатии клавиши. Как ключевой регистратор.

Преимущество WH_KEYBOARD в том, что он имеет доступ к состоянию клавиатуры. Это свойство для каждого процесса в Windows. Состояние, подобное активной раскладке клавиатуры, и состояние модификатора и мертвых ключей имеют большое значение, если вы хотите использовать крючок для перевода виртуальных ключей на ввод ключей самостоятельно. Вы не можете надежно вызвать ToUnicodeEx() из внешнего процесса.

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