Win32 API. Hooks (хуки) - Функция KeyboardProc
ОГЛАВЛЕНИЕ
Функция KeyboardProc
(ПроцедураКлавиатуры)
Подключаемая процедура KeyboardProc является определяемой программой или библиотекой функцией повторного вызова, которую система вызывает всякий раз, когда прикладная программа вызывает функцию GetMessage или PeekMessage и имеется сообщение клавиатуры (WM_KEYUP или WM_KEYDOWN), которое надо обработать.
Синтаксис
LRESULT CALLBACK KeyboardProc
(
int code, // код hook-точки
WPARAM wParam, // код виртуальной клавиши
LPARAM lParam // информация о сообщении нажатой клавиши
);
Параметры
code
Определяет код, который подключаемая процедура использует, чтобы определить, как обработать сообщение. Этот параметр может быть одним из следующих значений:
- HC_ACTION - Параметры wParam и lParam содержат информацию о сообщении нажатой клавиши.
- HC_NOREMOVE - Параметры wParam и lParam содержат информацию о сообщении нажатой клавиши, но сообщение нажатой клавиши не удаляется из очереди сообщений. (Прикладная программа вызвала функцию PeekMessage, установив флажок PM_NOREMOVE.)
Если code - меньше чем нуль, подключаемая процедура должна передать сообщение в функцию CallNextHookEx без дальнейшей обработки, а возвратить должна значение возвращенное CallNextHookEx.
wParam
Определяет виртуальный код клавиши, которая создала сообщение нажатой клавиши.
lParam
Определяет счет повторений, скэн-код, флажок расширенной - клавиши, контекстный код, флажок предыдущего состояния клавиши и флажок переходного состояния. Этот параметр может быть комбинацией следующих значений:
- 0-15 - Определяет счет повторений. Значением является число нажатий клавиши, которое повторено в результате пользовательского удерживания нажатия клавиши.
- 16-23 - Определяет скэн-код. Значение зависит от фирмы-изготовителя оборудования (OEM).
- 24 - Определяет, является ли клавиша расширенной клавишей, типа функциональной или клавиши на цифровой клавиатуре. Если клавиша является расширенной, это значение равно 1, иначе, оно - 0.
- 25-28 - Зарезервировано.
- 29 - Определяет код контекста. Это значение является 1, если нажата клавиша ALT; иначе, оно - 0.
- 30 - Определяет предыдущее состояние клавиши. Это значение является 1, если клавиша была нажата перед отправкой сообщения. Оно - 0, если клавиша была не нажата.
- 31 - Определяет переходное состояние. Это значение 0, если клавиша нажимается и 1, если клавиша отпускается.
Для получения дополнительной информации о параметре lParam, см. Флажки сообщения нажатия клавиши.
Возвращаемые значения
Чтобы предохранить Windows от передачи сообщения по остальной части цепочки hook-точек или в целевую оконную процедуру, величина возвращаемого значения должна быть значением отличным от нуля. Чтобы позволить Windows передавать сообщение в целевую оконную процедуру, в обход оставшихся в цепочке процедур, величина возвращаемого значения должна быть нулевая.
Замечания
Прикладная программа устанавливает подключаемую процедуру, путем определения типа hook-точки как WH_KEYBOARD и ее адреса при вызове функции SetWindowsHookEx.
KeyboardProc - метка - заместитель для определяемого программой или определенного библиотекой имени функции.
Смотри также
CallNextHookEx, GetMessage, PeekMessage, SetWindowsHookEx, WM_KEYUP, WM_KEYDOWN
Размещение и совместимость KeyboardProc
Windows NT Да
Win95 Да
Win32s Да
Импортируемая библиотека Определяется пользователем
Заголовочный файл winuser.h
Unicode Нет
Замечания по платформе HOOKPROC