Функция KeyboardProc

Процедура фильтра (hook) KeyboardProc - определяемая программой или определяемая библиотекой функция повторного вызова, используемая функцией SetWindowsHookEx. Система вызывает эту функцию всякий раз, когда приложение вызывает функцию GetMessage или PeekMessage и есть сообщение клавиатуры (WM_KEYUP или WM_KEYDOWN) для обработки.

Тип HOOKPROC определяет указатель на эту функцию повторного вызова. KeyboardProc - это имя - заместитель для определяемого программой или определяемого библиотекой имени функции.

Синтаксис

LRESULT CALLBACK KeyboardProc(      
    int code,
    WPARAM wParam,
    LPARAM lParam
);

Параметры

code

[in] Устанавливает код использования процедуры фильтра (hook), чтобы решить, как обработать сообщение. Если code - меньше чем нуль, процедура фильтра (hook) должна передать сообщение в функцию CallNextHookEx без дальнейшей обработки и должна возвратить значение, возвращенное CallNextHookEx. Этим параметром может быть одно из ниже перечисленных значений.

 

Значение Предназначение
HC_ACTION Параметры wParam и lParam содержат информацию о сообщении нажатия клавиши.
HC_NOREMOVE Параметры wParam и lParam содержат информацию о сообщении нажатия клавиши и оно не было удалено из очереди сообщений. (Приложение вызвало функцию PeekMessage, определяя флажок PM_NOREMOVE.)

wParam

[in] Устанавливает код виртуальной клавиши, которая генерировала сообщение нажатия клавиши.

lParam

[in] Устанавливает счет повторов, код опроса клавиатуры(скэн-код), флажок дополнительной клавиши, контекстный код, флажок предыдущего состояния клавиши и флажок переходного состояния. Дополнительную информацию о параметре lParam, см.  в статье Флажки сообщения о нажатии клавиши. Этот параметр может состоять из одного или нескольких ниже перечисленных значений.

 

Значение Предназначение
0-15 Устанавливает счет повторов. Значение - количество раз, повторных нажатий клавиши в результате удержания нажатой клавиши пользователем.
16-23 Устанавливает код опроса клавиатуры(скэн-код). Значение зависит от изготовителя комплектного оборудования (OEM).
24 Устанавливает, является ли клавиша дополнительной клавишей, типа функциональной клавиши, или клавишей на числовой вспомогательной клавиатуре. Значение - 1, если клавиша - дополнительная; в противном случае, это - 0.
25-28 Зарезервировано.
29 Устанавливает контекстный код. Значение - 1, если клавиша ALT находится в нажатом состоянии; в противном случае, это - 0.
30 Устанавливает предыдущее состояние клавиши. Значение - 1, если клавиша находится в нажатом состоянии прежде, чем отправляется сообщение ; оно - 0, если клавиша находится в отпущенном состоянии.
31 Устанавливает состояние перехода. Значение - 0, если клавиша в процессе нажатия и 1- если она в процессе отпускания.

Возвращаемое значение

Если code - меньше чем нуль, процедура фильтра (hook) должна возвратить значение, возвращенное функцией CallNextHookEx.

Если code больше или равен нулю, а процедура фильтра (hook) не обрабатывала сообщение, очень рекомендуется, чтобы Вы вызвали CallNextHookEx и возвратили значение, которое она возвращает; в противном случае, другие приложения, которые установили фильтр WH_KEYBOARD не будут получать уведомления фильтра (hook) и,  в результате, могут повести себя неправильно. Если процедура фильтра (hook) обрабатывала сообщение, она может возвратить ненулевое значение, которое воспрепятствует системе передать сообщение в остальную часть цепочки фильтра (hook) или в целевую оконную процедуру.

Замечания

Приложение устанавливает процедуру фильтра (hook), определяя тип фильтра как WH_KEYBOARD и указатель на эту процедуру при вызове функции SetWindowsHookEx.

Смотри также

Обзор Фильтр-процедуры (hooks) событий, Функции, используемые фильтрами (hook)CallNextHookExGetMessagePeekMessageSetWindowsHookEx, WM_KEYUP, WM_KEYDOWN

Размещение и совместимость KeyboardProc

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Нет

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz