Функции для работы с клавиатурой и манипулятором мышь находятся в библиотеке, статически активируемой с нашим приложением. Такой подход обеспечивает проецирование библиотеки на адресное пространство каждого процесса в системе, тем самым, обеспечивая обработку нажатий клавиш клавиатуры и манипулятора мышь для любого приложения, и посылку соответствующего сообщения в окно формы обработки. HWND окна обработки определяется из названия этого окна, т.е. происходит последовательное сканирование окон системы по названию и соответствующий анализ, в случае удовлетворения условия поиска отправляется соответствующее сообщение.
Обработка сообщений клавиатуры в библиотеке:
Активизация обработчика HOOK клавиатуры происходит вызовом импортируемой функции void _import Keyboard_Hook_Active(), после чего все сообщения от клавиатуры проходят через функцию возврата: LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam), которая располагается в библиотеке.
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) выполняет следующие действия:
1. Проверка повторного нажатия клавиши, в случае выполнения условия клавиша игнорируется.
2. Определение факта отпускания клавиши (KEYUP), для однозначной идентификации нажатия.
3. Осуществляет поиск окна формы для посылки формируемого сообщения содержащего виртуальный код клавиши и дополнительные параметры.
4. При идентификации клавиши Enter формируется дополнительный параметр в сообщении lParam=20 – сообщающий приложению – обработчику о завершении строки набираемой пользователем.
5. Принимается условие о включении или выключении клавиатуры на рабочей станции.
6. Посылается сообщение приложению-обработчику, содержащему виртуальный код клавиши и параметр регулирования обработки сообщения.
Отключение HOOK клавиатуры происходит вызовом функции UnhookWindowsHookEx(hhook).
Обработка сообщений манипулятора мышь в библиотеке:
Активизация обработчика HOOK манипулятора мышь происходит вызовом импортируемой функции void _export Mouse_Hook_Active(), после чего все сообщения от мыши проходят через функцию возврата: LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam), которая располагается в библиотеке.
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam) выполняет следующие действия:
Посылки сообщения от мыши приложению – обработчику не произойдет до тех пор, пока пользователь на рабочей станции не нажмет любую клавишу на клавиатуре т.к. нет смысла отслеживать только сообщения от манипулятора мышь.
Список функций приложения –обработчика:
Приложение-обработчик в дальнейшем именуем обработчик
При посылке сообщения из библиотеке обработчик вызывает функцию bool __fastcall HOOK_KEYBOARD_MSG(TMessage &Message), которая выполняет следующие действия:
Функция AnsiString __fastcallConver_IntTo_Keyboard_Key_Ang(intVirtualKey) конвертирует вируальный код клавиши полученный из библиотеки в символ английского алфавита верхнего или нижнего регистра, в зависимости от состояния клавиши CAPSLOCK.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.