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