Coder969 Ответов: 2

Разница между крючками клавиатуры(WH_KEYBOARD и WH_KEYBOARD_LL)


I want to understand which hook is used for what purpose.


Что я уже пробовал:

I have googled and only difference I understood is WH_KEYBOAD will inject the dll into the processes but for the WH_KEYBOAD_LL windows will make a direct call to call back function without injecting the dll.

So my question is, will both the hooks do the same functionality or is there any difference between . It will be helpful if you can give an example for both the hooks?

2 Ответов

Рейтинг:
18

Richard MacCutchan

Все это описано на сайте Обзор крючков - приложения Windows | Microsoft Docs[^].


Coder969

Спасибо за ответ. Я читаю суть, но все еще не могу понять разницу. В чем разница между очередью сообщений и входной очередью потока? Можете ли вы объяснить пример использования, когда использовать какой крючок?

Richard MacCutchan

Объяснения есть в ссылках. Суффикс _LL предназначен для низкоуровневого крючка, который ловит все действия до обновления статуса ключа. Крючок WH_KEYBOARD просто ловит простые события keyup и keydown. Входная очередь потока - это просто очередь, в которую помещаются сообщения перед извлечением кодом приложения. Вы можете запросить сообщения, принадлежащие определенному потоку, поместив его идентификатор в структуру MSG.

Coder969

Спасибо за объяснение . Из вашего комментария я понял, что WH_KEYBOARDHOOK_LL предоставляет больше информации по сравнению с WH_KEYBOARDHOOK.

Мое требование состоит в том, чтобы войти в файл всякий раз, когда нажата клавиша "Enter". Какой крючок лучше использовать?

Richard MacCutchan

Используйте WH_KEYBOARDHOOK, так как вас интересует только нажатая клавиша.

Coder969

Спасибо :)

Рейтинг:
1

Member 10779791

как я могу отследить имя приложения или url-адрес браузера, где что-то печатается??
Например, если я а\м печатать на слово, то это будет ответным словом, если он будет в EXE-файл, потом EXE-файл, имя?? Любое предложение

Заранее благодарю вас


Richard MacCutchan

"Любое предложение"
Не публикуйте вопросы в качестве решений для существующих записей QA.