Function HookFunctions
CallMsgFilter
Функция
CallMsgFilter фильтрует определенное сообщение и
передает управление в процедуры, связанные с
захватами WH_SYSMSGFILTER и WH_MSGFILTER. WH_SYSMSGFILTER и WH_MSGFILTER
перехватывающие процедуры -
программно-определенные функции обратного
вызова (callback), которые проверяют и, дополнительно,
модифицируют сообщения для диалогового окна,
сообщения меню, или перемещает зону.
BOOL
CallMsgFilter(
LPMSG
lpMsg, // Ссылка на структуру с данными о сообщении
int
nCode // Код перехвата
);
Параметры
lpMsg
Ссылка
на MSG структуру, которая содержит сообщение,
фильтруемое для перехватывающей процедуры
nCode
Определяется
приложением и используется перехватом для того,
чтоб ыопределить как обрабатывать сообщение. Код
должен иметь одинаковые значения с
системно-определенными кодами перехвата (MSGF_ и HC)
ассоциированы с WH_SYSMSGFILTER и WH_MSGFILTER.
Возвращаемые
значения
Если
приложение будет обрабатывать процесс в
дальнейшем, то возвращается 0.
Если
нет, то возвращается не 0.
Заметки
Windows
вызывает CallMsgFilter, чтобы позволить приложению
проверять и контролировать поток сообщений в
процессе внутренней обработки диалоговых окон,
меню и scroll bar’ов, или когда пользователь
активирует окно нажатием комбинации ALT+TAB.
Приложение
устанавливает перехват используя функцию
SetWindowsHook.
Смотри
также:
MessageProc,
MSG, SetWindowsHookEx, SysMsgProc
CallNextHookEx
Функция
CallNextHookEx пропускает информацию перехвата в
следующую процедуру перехвата в текущий цепь
перехвата. Эта функция заменяется функцией
DefHookProc.
LRESULT
CallNextHookEx(
HHOOK
hhk, // Описатель (Handle) данного перехвата
int
nCode, // Код перехвата, передаваемый в процедуру
перехвата
WPARAM
wParam, // value passed to hook procedure
LPARAM
lParam // value passed to hook procedure
);
Параметры
hhk
Идентифицирует
текущий перехват. Приложение возвращает этот
описатель как результат предыдущего вызова
функции SetWindowsHookEx.
nCode
Определяет
код перехвата, пришедший в процедуру перехвата.
Следующая процедура перехвата использует этот
код для того, чтобы определить, как обрабатывать
информацию о перехвате.
wParam
Определяет
приходящую величину в процедуру
перехвата.Значение этого параметра зависит от
типа захвата, связываемого с текущей цепью
перехватов.
lParam
Определяет
приходящую величину в процедуру перехвата.
Значение этого параметра зависит от типа
захвата, связываемого с текущей цепью захватов.
Возвращаемые
значения
Если
функция успешно завершается, то возвращенным
значением будет значение, возвращенное
следующей процедурой перехвата в цепи
перехватов. Текущая процедура перехвата также
должна возвратить эту величину. Значение
величины зависит от типа захвата. Для получения
большей информации сморти описания
индивидуальных процедур перехвата.
Заметки
Процедуры
перехвата устанавливаются в цепи определенных
типов перехватов. CallNextHookEx вызывает следующий
перехват в цеппи.
Вызов
CallNextHookEx является дополнительной функцией.
Процедура перехвата может вызывать эту функцию
до или после обработки информации о перехвате.
Если процедура перехвата не вызывает CallNextHookEx,
Windows не выхывает перехваты, установленные до
установки данного перехвата.
Смотри
также:
SetWindowsHook,
SetWindowsHookEx, UnhookWindowsHook, UnhookWindowsHookEx
CallWndProc
CallWndProc
–callback процедура перехвата, определенная в
приложении или в библиотеке, которую система
вызывает всякий раз, когда вызывается функция
SendMessage. До прохождения сообщения в конечную
окнную процедуру, система прогоняет сообщения
через процедуры перехвата. Процедуры,
перехватывающие сообщение могут проверять его,
но не могут изменять.
CallWndProc
– это метка-заполнитель для программно –
определенной или библиотечной функции.
LRESULT
CALLBACK CallWndProc(
int
nCode, // код перехвата
WPARAM
wParam, // флаг текущего процесса
LPARAM
lParam // адрес на структуру с данными о сообщении
);
Параметры
nCode
Определяет
процедуру, которая должна обработать перехват
сообщения. Если nCode=HC_ACTION, то процедура захвата
должна обработать сообщение. Если nCode меньше 0, то
процедура перехвата должна передать значение в
функцию CallNextHookEx без дальнейшей обработки и
вернуть значение, возвращенное CallNextHookEx.
wParam
Устанавливается
тогда, когда сообщение было послано текущим
процессом. Если сообщение было послано текущим
процессом, это ненулевое; в противном случае, это
NULL.
lParam
Указатель
на структуру CWPSTRUCT, которая содержит подробности
о сообщении
Возвращаемое
значение
Возвращаемое
значение дожно быть 0.
Заметки
Процедура
перехвата CallWndProc не может модифицировать
сообщение. После перехвата процедура возвращает
управление системе, а сообщение проходит в
оконную процедуру.
Приложение
устанавливает перехват определяя перехват типа
WH_CALLWNDPROC и адрес перехватывающей процедуры на
вызове процедуры SetWindowsHookEx.
Перехват
WM_CALLWNDPROC не вызывается вызывает контекст нити,
вызвавшей SendMessage, но не контекст нити, получившей
сообщение.
Смотри
также:
CallNextHookEx,
CWPSTRUCT, SendMessage, SetWindowsHookEx
CallWndRetProc
Процедура
CallWndRetProc сейчас поддерживается и WinNT.
Процедура
– процедура перехвата, определенная приложением
или библиотекой callback функция вызываемая после
функции SendMessage. После прохода сообщения к
окну-приемнику, система проходит по хук
процедурам. Хук процедура может исследовать
сообщение, но не может его изменять.
LRESULT
CALLBACK CallWndRetProc(
int
nCode, // Код перехвата
WPARAM
wParam, // Флаг текущего процесса
LPARAM
lParam // Адрес структуры с данными о сообщении
);
Параметры
nCode
Определяет,
когда хук процедура должна перехватывать
сообщение. Если nCode=HC_ACTION, тогда хук процедура
будет обрабатывать сообщение. Если nCode меньше 0,
то процедура перехвата должна передать
сообщение функции CallNextHookEx без дальнейшей
обработки и возвратить значение, от CallNextHookEx.
wParam
Определяет,
послано ли сообщение текущим процессом. Если
сообщение послано текущим процессом, то wParam;
иначе, это NULL.
lParam
Указатель
на структуру CWPRETSTRUCT, которая содержит детальную
информацию о сообщении.
Возвращаемое
значение
Возвращаемое
значение должно быть 0.
Заметки
An
application installs the hook procedure by specifying the WH_CALLWNDPROCRET hook type and
the address of the hook procedure in a call to the SetWindowsHookEx function.
CallWndRetProc
is a placeholder for the application-defined or library-defined function name.
Приложение
устанавливает хук процедуру, определяя тип хука
WH_CALLWNDPROCRET и адрес процедуры хука в запросе к
функции SetWindowsHookEx.
CallWndRetProc
–держатель для определенного заявлением или
определенного библиотекой названия(имени)
функции.
Смотри
также
CallNextHookEx,
CallWndProc, CWPRETSTRUCT, SendMessage, SetWindowsHookEx
CBTProc
Процедура
перехвата CBTProc определенная приложением или callback
функцией в библиотеке, которую система вызывает
до активации, создания, уничтожения, минимизации,
максимизации, перемещения или изменением
размера окна; до окончания системной команды; до
удаления события от мыши, клавиатуры в системной
очереди. Значение, возвращаемое хук процедурой
определяет позволяет ли Windows или предотвращает
эту операцию. Приложения обучения (A computer-based training
(CBT) application) используют эту хук процедуру для
получения полезной информации от системы.
LRESULT
CALLBACK CBTProc(
int
nCode, // Код перехвата
WPARAM
wParam, // Зависит от кода хука
LPARAM
lParam // Зависит от кода хука
);
Параметры
nCode
Определяет
значение, которое хук процедура использует,
чтобы определить, как использовать сообщение.
Этот параметр может иметь следующие значения:
Значение
|
Описание
|
HCBT_ACTIVATE |
Система
собирается активировать окно. |
HCBT_CLICKSKIPPED |
Система удалила
удалила сообщение мыши из очереди. После
получения этого хук кода CBT приложение должно
установить WH_JOURNALPLAYBACK хук в ответ на сообщение
мыши |
HCBT_CREATEWND |
Окно готово к
созданию. Система вызывает эту хук процедуру до
посылки сообщений WM_CREATE и WM_NCCREATE к окну. Если хук
процедура возвратит ненулевое значение, то
система уичтожит окно; функция CreateWindow возвратит
NULL, но сообщение WM_DESTROY не будет послано. Если хук
процедура возвратит 0, то окно будет создано как
обычно. В момент
уведомления HCBT_CREATEWND, окно было создано, но
окончательный размер и положение может быть
неопределен, и возможно его родительское окно не
установлено.
Это
возможность посылать сообщения в только что
созданное окно, хотя это окно еще не получило
сообщения WM_NCCREATE или WM_CREATE.
Также
возможно изменить позицию в Z order только что
созданного окна путем изменения параметра
hwndInsertAfter из структуры CBT_CREATEWND |
HCBT_DESTROYWND |
Окно готово для
уничтожения |
HCBT_KEYSKIPPED |
Система удаляет
сообщение с клавиатуры из очереди. После
получения хук кода CBT приложение должно
установить хук процедуру WH_JOURNALPLAYBACK_hook в ответ на
сообщение с клавиатуры |
HCBT_MINMAX |
Окно собирается
минимизироваться или максимизироваться |
HCBT_MOVESIZE |
Окно собирается
передвигаться или измененять размеры |
HCBT_QS |
Система
восстановила из очереди сообщение WM_QUEUESYNC |
HCBT_SETFOCUS |
Окно собирается
получить фокус ввода с клавиатуры |
HCBT_SYSCOMMAND |
A system command is about to be
carried out. This allows a CBT application to prevent task switching by means of hot keys.
Системная
команда готова к выполнению. Это позволяет CBT
приложению переключать задачи посредством
горячих клавиш |
Если nCode - меньше
нуля, процедура ловушки должна передать
управление функции CallNextHookEx без дальнейшей
обработки сообщения и должна возвратить
значение, возвращенное CallNextHookEx.
wParam
Зависит
от параметра nCode. Для подробностей, см. следующий
раздел Заметок.
lParam
Зависит
от параметра nCode. Для подробностей, см. следующий
раздел Заметок.
Возвращаемые
значения
Для
действий, соответствующих следующим кодам
ловушки CBT, возвращаемое значение должно быть 0,
чтобы позволить операцию, или 1 не позволить:
HCBT_ACTIVATEHCBT_CREATEWNDHCBT_DESTROYWNDHCBT_MINMAXHCBT_MOVESIZEHCBT
_SETFOCUSHCBT_SYSCOMMAND
Для
действий, соответствующих следующим кодам
ловушки CBT, возвращаемое значение игнорируется:
HCBT_CLICKSKIPPEDHCBT_KEYSKIPPEDHCBT_QS
Заметки
Процедура
ловушки не должна установить процедуру ловушки
WH_JOURNALPLAYBACK_HOOK за исключением ситуаций, описанных
в предшествующем списке кодов ловушки.
Эта
процедура ловушки должна быть в библиотеке
динамических связей (DLL). Приложение
устанавливает процедуру ловушки, определяя тип
ловушки как WH_CBT и адрес процедуры ловушки
обращаясь к функции SetWindowsHookEx.
Следующая
таблица описывает wParam и lParam параметры для
каждого кода ловушки HCBT_:
Значение |
WParam |
lParam |
HCBT_ACTIVATE |
Определяет
дескриптор окнf, собирающегося активизироваться |
Определяет
длинный указатель на структуру CBTACTIVATESTRUCT,
содержащую дескриптор активного окна и
определяет, изменяется ли активация из-за щелчка
мыши. |
HCBT_CLICKSKIPPED |
Идентифицирует
сообщение мыши, удаленное из очереди сообщений
системы |
Определяет
длинный указатель на структуру MOUSEHOOKSTRUCT,
содержащую результаты hit-test испытаний и
дескриптор окна, для которого сообщение мыши
предназначено. |
HCBT_CREATEWND |
Определяет
дескриптор нового окна |
Определяет
длинный указатель на структуру CBT_CREATEWND,
содержащую параметры инициализации окна.
Параметры включают координаты и габариты окна.
Изменяя эти параметры, процедура ловушки CBTPROC
может устанавливать начальный размер и позицию
окна. |
HCBT_DESTROYWND |
Определяет
дескриптор окна, которое будет разрушено. |
Является
неопределенным и должен быть установлен на нуль. |
HCBT_KEYSKIPPED |
Идентифицирует
кнопку с виртуальным кодом. |
Определяет число
повторов, скэн-код, код перехода клавиши,
предыдущее состояние клавиши, и контекстный код.
Значение HCBT_KEYSKIPPED послано процедуре ловушки CBTPROC
только, если установлена ловушка WH_KEYBOARD . Для
подробной информации, см. WM_KEYUP или сообщение
WM_KEYDOWN. |
HCBT_MINMAX |
Определяет
дескриптор окна, минимизируемого или
максимизируемого. |
Определяет,
младшее слово, значение видимого окна (SW) _
определябщего операцию. Для списка значений
окна, см. ShowWindow. Старшее слово неопределено. |
HCBT_MOVESIZE |
Определяет
дескриптор окна, которое нужно переместить или
установить размер. |
Определяет
длинный указатель на структуру RECT, содержащую
координаты окна. Изменяя значения в структуре,
процедура ловушки CBTPROC может устанавливать
окончательные координаты окна. |
HCBT_QS |
Неопределен,
должен быть 0. |
Неопределен,
должен быть 0. |
HCBT_SETFOCUS |
Определяет
дескриптор окна, получающему фокус ввода. |
Определяет
дескриптор окна, теряющему фокус ввода. |
HCBT_SYSCOMMAND |
Определяет
значение команды системы (CS_) определение команды
системы. Для подробной информации относительно
значений команд системы, см. WM_SYSCOMMAND |
Содержит те же
самые данные что и значение lParam WM_SYSCOMMAND
сообщения: Если команда системного меню выбрана
мышью, слово младшего разряда содержит
x-координату курсора, в аппаратных координатах
устройства, и старшее слово содержит
y-координату; иначе, параметр не используется. |
Смотри также
CallNextHookEx,
CreateWindow, SetWindowsHookEx, WM_SYSCOMMAND
DebugProc
Хук
процедура DebugProc определяемая приложением или
библиотекой callback функция, которую Windows вызывает
до вызова хук процедуры, которая связана с любым
другим типом перехвата. Система предоставляет
информацию о хуке, который должен быть вызван, и
DebugProc определяет, позволить ли хуку запуститься.
LRESULT
CALLBACK DebugProc(
int
nCode, // Код перехвата
WPARAM
wParam, // Тип хука, собирающегося запуститься
LPARAM
lParam // Адрес структуры с отладочной информацией
);
Параметры
nCode
Определяет,
должна ли процедура перехвата обработать
сообщение. Если nCode=HC_ACTION, то хук процедура должна
обработать сообщение. Если nCode меньше нуля, то хук
процедура должна пропустить сообщение в функцию
CallNextHookEx без дальнейшей обработке и должна
вернуть значение, возвращенное CallNextHookEx.
wParam
Определяет
тип перехвата, который будет вызван. Этот
параметр может принимать следующие значения:
WH_CALLWNDPROC |
Устанавливает
процедуру перехвата, которая просматривает
посланные сообщения к оконной процедуре. Для
дополнительной информации, смотрите описание
процедуры CallWndProc. |
WH_CALLWNDPROCRET |
Устанавливает
процедуру перехвата, которая просматривает
сообщения, которые только что были обработаны
оконной процедурой. Для дополнительной
информации смотрите описание процедуры CallWndProc. |
WH_CBT |
Устанавливает
процедуру перехвата, которая получает
уведомления, полезные для CBT (программ
компьютерного обучения). Для дополнительной
информации смотри описание процедуры CBTProc. |
WH_DEBUG |
Устанавливает
процедуру перехвата, полезную при отладке других
хук процедур. Для дополнительной информации
смотри описание процедуры DebugProc. |
WH_GETMESSAGE |
Устанавливает
процедуру перехвата, которая контролирует
сообщения, записанные в очередь. Для
дополнительной информации смотри описание
процедуры GetMsgProc. |
WH_JOURNALPLAYBACK |
Устанавливает
процедуру перехвата, которая посылает сообщения,
предварительно записываемые процедурой
перехвата WH_JOURNALRECORD. Для дополнительной
информации смотри описание процедуры JournalPlaybackProc. |
WH_JOURNALRECORD |
Устанавливает
процедуру перехвата, которая записывает
сообщения, посланные в системную очередь. Эта хук
процедура полезна для записи макросов. Для
дополнительной информации смотри описание
процедуры JournalRecordProc. |
WH_KEYBOARD |
Устанавливает
процедуру перехвата, которая контролирует
сообщения от клавиатуры. См. описание KeyboardProc. |
WH_MOUSE |
Устанавливает
процедуру перехвата, которая контролирует
сообщения от мыши. См. описание процедуры MouseProc. |
WH_MSGFILTER |
Устанавливает
процедуру перехвата, которая просматривает
сообщения, генерируемые в результате ввода в dialog
box, message box, menu, или scroll bar. Хук процедура
контролирует эти сообщения, только для
приложения, которое установило этот хук. См
описание процедуры MessageProc. |
WH_SHELL |
Устанавливает
процедуру перехвата, которая получает
уведомления, полезные для расширенных
приложений. См описание процедуры ShellProc |
WH_SYSMSGFILTER |
Устанавливает
процедуру перехвата, которая контролирует
сообщения, генерируемые как результат ввода в
dialog box, message box, menu, or scroll bar. Такая хук процедура
контролирует все сообщения для всех приложений в
системе. См описание процедуры SysMsgProc. |
lParam
Указатель
на структуру DEBUGHOOKINFO, которая содержит параметры,
для прохода к предназначенной хук процедуре.
Возвращаемые
значения
Для
предотвращения установки перехватов в системе,
возвращаемое значение должно быть ненулевым.
Иначе процедура перехвата должна передать
информацию о перехвате функции CallNextHookEx.
Заметки
Приложение
устанавливает эту процедуру перехвата,
определяя тип перехвата WH_DEBUG и указатель на
процедуру перехвата, в запросе к функции
SetWindowsHookEx.
CallWndProc
и CallWndRetProc хранители имен функций для приложения
или библиотеки.
Смотри
также:
CallNextHookEx,
CallWndProc, CallWndRetProc, CBTProc, DEBUGHOOKINFO, GetMsgProc, JournalPlaybackProc,
JournalRecordProc, KeyboardProc, MessageProc, MouseProc, SetWindowsHookEx, ShellProc,
SysMsgProc
ForegroundIdleProc
Процедура
перехвата ForegroundIdleProc определенная приложением
callback функция, вызывается системой, когда 32 битная
нить переднего плана собирается перейти в
ожидание (приоритет idle).
DWORD
ForegroundIdleProc(
int
code, // Код перехвата
DWORD
wParam, // Не используется
LONG
lParam // Не используется
);
Параметры
code
Определяет
когда должна процедура перехвата обработать
сообщение. Если code равен HC_ACTION, хук процедура
должна обработать сообщение. Если code меньше нуля,
хук процедура должна передать сообщение к
функции CallNextHookEx без дальнейшей обработки и
должна возвратить значение, возвращенное
функцией CallNextHookEx.
wParam
Не
используется.
lParam
Не
используется.
Заметки
Приложение
устанавливает эту хук процедуру, определяя тип
перехвата WH_FOREGROUNDIDLE и указатель на хук процедуру
в запросе к функции SetWindowsHookEx.
ForegroundIdleProc
– место хранения имен функций в приложении.
Это
приспособленный к нитям перехват.
Смотри
также
CallNextHookEx,
SetWindowsHookEx
GetMsgProc
Процедура
ловушки GetMsgProc - определенная приложением или
библиотекой функция обратного вызова,
вызывается системой тогда, когда функция GetMessage
отыскала сообщение в очереди сообщений
приложения. Перед прохождением найденного
сообщения к процедуре окна адресата, система
передает сообщение к процедуре ловушки.
LRESULT
CALLBACK GetMsgProc(
int
code, // Код ловушки
WPARAM
wParam, // Флажок удаления
LPARAM
lParam // Адрес структуры с сообщением
);
Параметры
code
Определяет,
должна ли процедура ловушки обработать
сообщение. Если code равен HC_ACTION, процедура
ловушки должна обработать сообщение. Если код -
меньше чем нуль, процедура ловушки должна
передать управление функции CallNextHookEx без
дальнейшей обработки сообщения и должна
возвратить значение, возвращенное CallNextHookEx.
wParam
Определяет,
было ли сообщение удалено из очереди. Этот
параметр может иметь одно из следующих значений:
Значение |
Описание |
PM_NOREMOVE |
Определяет, что
сообщение не было удалено из очереди. (Приложение
вызвало функцию PeekMessage, определяя флажок PM_NOREMOVE.) |
PM_REMOVE |
Определяет, что
сообщение было удалено из очереди. (Приложение
вызвало функцию GetMessage, или функцию PeekMessage,
определяя флажок PM_REMOVE.) |
lParam
Указатель
на структуру MSG, содержащую подробную информацию
о сообщении.
Возвращаемые
значения
Возвращаемое
значение должно быть нулем.
Заметки
Процедура
ловушки GetMsgProc может исследовать или изменять
сообщение. После возврата управления системе,
функция GetMessage возвращает сообщение со всеми
изменениями, приложению, которое первоначально
вызвало его.
Приложение
устанавливает эту процедуру ловушки, определяя
тип ловушки как WH_GETMESSAGE и адрес процедуры ловушки
обращаясь к функции SetWindowsHookEx.
GetMsgProc
- метка - заполнитель для определенного
приложением или определенного библиотекой имени
функции.
Смотри
также
CallNextHookEx,
GetMessage, MSG, PeekMessage, SetWindowsHookEx
JournalPlaybackProc
Процедура
ловушки JournalPlaybackProc – callback (обратного вызова)
функция, которая вставляет сообщения от мыши и
клавиатуры в системную очередь сообщений.
Обычно, приложения используют эту процедуру,
чтобы воспроизвести ряд действий мыши и
клавиатуры, предварительно записанных
процедурой ловушки JournalRecordProc. Пока процедура
ловушки JournalPlaybackProc установлена, ввод с мыши и
клавиатуры заблокирован.
LRESULT
CALLBACK JournalPlaybackProc(
int
code, // Код ловушки
WPARAM
wParam, // неопределено
LPARAM
lParam // Адрес обрабатываемого сообщения
);
Параметры
code
Определяет
код процедуры ловушки, используемый для
определения способа обработки сообщения. Этот
параметр может иметь одно из следующих значений:
Значение |
Описание |
HC_GETNEXT |
Процедура
ловушки должна копировать текущее сообщение
мыши или сообщение клавиатуры в структуру EVENTMSG,
указатель на которую находиться в lParam. |
HC_NOREMOVE |
Приложение
вызвало функцию PeekMessage с wRemoveMsg установленным как
PM_NOREMOVE, указывая, что сообщение не удалено из
очереди после обработки PeekMessage. |
HC_SKIP |
Процедура
ловушки должна подготовиться скопировать
следующее сообщение мыши или сообщение
клавиатуры в структуру EVENTMSG, на которую
указывает lParam. После получения кода HC_GETNEXT,
процедура ловушки должна копировать сообщение в
структуру. |
HC_SYSMODALOFF |
Системно-модальное
диалоговое окно было разрушено. Процедура
ловушки должна продолжить воспроизводить
сообщения. |
HC_SYSMODALON |
Системно-модальное
диалоговое окно отображается. Пока диалоговое
окно не разрушено, процедура ловушки должна
прекратить воспроизводить сообщения. |
Если code - меньше
нуля, процедура ловушки должна передать
управление функции CallNextHookEx без дальнейшей
обработки и должна возвратить значение,
возвращенное CallNextHookEx.
WParam
Определено
как NULL.
LParam
Указывает
на структуру EVENTMSG, которая представляет собой
сообщение, обрабатываемое процедурой ловушки.
Этот параметр допустим только, когда параметр code
- HC_GETNEXT.
Возвращаемые
значения
Для
того, чтобы заставить систему ждать перед
обработкой сообщения, возвращаемое значение
должно быть количеством времени, в импульсах
сигнала времени часов, которое система должна
ждать. (Это значение может быть получено, замеряя
различие между элементами времени в текущих и
предыдущих входных сообщениях.) Чтобы обработать
сообщение немедленно, возвращаемое значение
должно быть нуль. Возвращаемое значение
используется только, если код ловушки - HC_GETNEXT;
иначе, он игнорируется.
Заметки
Процедура
ловушки JournalPlaybackProc должна копировать входное
сообщение к параметру lParam. Сообщение должно быть
предварительно записано, используя процедуру
ловушки JournalRecordProc, которая не должна изменять
его.
Чтобы
выполнять одно и то же сообщение много раз,
процедура ловушки может называться несколько
раз с набором параметров кодов к HC_GETNEXT без
вмешивающегося обращения с code, равным HC_SKIP.
Если
code - HC_GETNEXT, и возвращаемое значение больше нуля,
система бездействует столько миллисекунд,
сколько определено возвращаемым значением.
Когда система пробуждается, то вызывает
процедуру ловушки снова с code, равным HC_GETNEXT, чтобы
восстановить то же самое сообщение. Возвращаемое
значение от этого нового обращения до JournalPlaybackProc
должно быть нуль; иначе, система опять будет
бездействовать столько миллисекунд, сколько
определено возвращаемым значением, вызывать
JournalPlaybackProc снова, и так далее. Система может
повиснуть.
В
отличие от большинства других глобальных
процедур ловушек, JournalRecordProc и JournalPlaybackProc -
процедуры ловушки всегда вызвываемые контекстом
нити, которая устанавливают ловушку.
После
возврата управления системе, сообщение
продолжает обработываться. Если code - HC_SKIP,
процедура ловушки должна быть готова возвратить
следующее записанное сообщение при следующем
обращении.
Приложение
устанавливает процедуру ловушки JournalPlaybackProc,
определяя тип ловушки как WH_JOURNALPLAYBACK и адрес
процедуры ловушки в обращении к функции
SetWindowsHookEx.
Win32
JournalRecordProc не должна помещаться в DLL, она может
находиться только непосредственно в приложении.
Если пользователь нажимает CTRL + ESC или CTRL + ALT + DEL в
течение воспроизведения журнала, система
останавливает проигрыватель, отсоединяет
процедуру проигрывателя журнала, и посылает
сообщение WM_CANCELJOURNAL проигрывающему приложению.
Если
процедура ловушки возвращает сообщение в
диапазоне от WM_KEYFIRST до WM_KEYLAST, то применяются
следующие условия:
·
ParamL элемент структуры EVENTMSG определяет
виртуальный код клавиши, которая была нажата.
·
ParamH элемент структуры EVENTMSG определяет скан-код.
· Не
имеется никакого способа определить счет repeast (?).
Событие всегда возьмет представляющее событие
клавиши.
JournalPlaybackProc
- метка - заполнитель для определенного
приложением или определенного библиотекой имени
функции.
Смотри
также:
CallNextHookEx,
EVENTMSG, JournalRecordProc, PeekMessage, SetWindowsHookEx, WM_CANCELJOURNAL
JournalRecordProc
Процедура
ловушки JournalRecordProc - функция обратного вызова,
которая записывает сообщения, а система удаляет
их из очереди. Позже, приложение может
использовать процедуру ловушки JournalPlaybackProc, чтобы
воспроизвести записанные сообщения.
LRESULT
CALLBACK JournalRecordProc(
int
code, // Код ловушки
WPARAM
wParam, // Неопределено
LPARAM
lParam // Адрес обрабатываемого сообщения
);
Параметры
Code
Определяет,
как обработать сообщение. Этот параметр может
иметь одно из следующих значений:
Значение |
Описание |
HC_ACTION |
LParam указывает на
структуру EVENTMSG, содержащую информацию
относительно сообщения, удаленного из системной
очереди сообщений. Процедура ловушки должна
записать содержанимое структуры, копируя их в
свой буфер или файл. |
HC_SYSMODALOFF |
Системно-модальное
диалоговое окно было разрушено. Процедура
ловушки должна продолжить к запись. |
HC_SYSMODALON |
Системно-модальное
диалоговое окно отображается. Пока диалоговое
окно не разрушено, процедура ловушки должна
прекратить делать запись. |
Если code -
меньше нуля, процедура ловушки должна передать
сообщение функции CallNextHookEx без дальнейшей
обработки и должна возвратить значение,
возвращенное CallNextHookEx.
WParam
Должно
иметь значение NULL.
LParam
Указатель
на структуру EVENTMSG, которая содержит информацию о
сообщении, которую нужно записать.
Возвращаемые
значения
Возвращаемое
значение игнорируется.
Заметки
Процедура
ловушки JournalRecordProc должна копировать, но не
изменять сообщения. После возврата управления
системе, сообщение продолжает обрабатываться.
Приложение
устанавливает процедуру ловушки JournalRecordProc,
определяя тип ловушки WH_JOURNALRECORD и адрес процедуры
ловушки обращаясь к функции SetWindowsHookEx.
Win32
ловушка JournalRecordProc не должна располагаться в DLL.
Win32 JournalRecordProc можно располагать только
непосредственно в приложении.
В
отличие от большинства других глобальных
процедур ловушк, JournalRecordProc и JournalPlaybackProc всегда
вызванются контекстом нити, которая
устанавливает ловушку.
Приложение,
которое установило ловушку JournalRecordProc, должно
наблюдать за VK_CANCEL виртуальный keycode (который
определен как CTRL + Break на большинстве клавиатур).
Этот виртуальный keycode должен быть
проинтерпретирован приложением как сигнал, что
пользователь хочет останавливаться запись
журнала. Приложение должно отреагировать на
останов, заканчивая запись и удаление процедуры
ловушки JournalRecordProc. Удаление важно. Это
предотвращает приложение, записывающее журнал
событий от зависания система, приводя к останову
внутри процедуры ловушки.
Это
как сигнал, чтобы остановить запись журнала, так
что CTRL + Break не может быть записан обычным методом.
Начиная с CTRL + C комбинация не имеет никакой роли
как сигнал для контроля записи, следовательно,
могут быть записаны. Имеются две других
комбинации клавиш, которые не могут быть
записаны: CTRL + ESC и CTRL + ALT + DEL. Те две комбинации
клавиш заставляют систему останавливать все
записывающие действия, удалять все ловушки
(journaling), и посылать сообщение WM_CANCELJOURNAL к
записывающему приложению.
Смотри
также:
CallNextHookEx,
EVENTMSG, JournalPlaybackProc, SetWindowsHookEx, WM_CANCELJOURNAL
KeyboardProc
Процедура
ловушки KeyboardProc - определенная приложением или
библиотекой функция обратного вызова вызывается
системой всякий раз, когда из прикладной
программы вызывается функция GetMessage или PeekMessage и
имеется сообщение от клавиатуры (WM_KEYUP или WM_KEYDOWN).
LRESULT
CALLBACK KeyboardProc(
int
code, // Код ловушки
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, см.
Флажки Keystroke Message Flags.
Возвращаемые
значения
Чтобы
предотвратить Windows от прохождения сообщения к
остальной части цепочки ловушок или к выходной
оконной процедуре, возвращаемое значение должно
быть отличное от нуля. Чтобы позволить Windows
передавать сообщение к выходной процедуре окна,
обходя(шунтируя) процедуры дальнейшего
пребывания в цепочке, возвращаемое значение
должно быть нуль.
Заметки
Приложение
устанавливает процедуру ловушки, определяя тип
ловушки WH_KEYBOARD и адрес процедуры ловушки вызывая
вунуйию SetWindowsHookEx.
Смотри
также
CallNextHookEx,
GetMessage, PeekMessage, SetWindowsHookEx, WM_KEYUP, WM_KEYDOWN
MessageProc
Процедуру
ловушки MessageProc - определенную приложением
функцию обратного вызова система вызывает после
того, как входное событие происходит в
диалоговом окне, окне сообщения, меню, или полосе
прокрутки, но прежде, чем сообщение,
сгенерированное входным событием будет
обработано. Процедура ловушки может
контролировать сообщения для диалогового окна,
окна сообщения, меню, или полосы прокрутки,
созданной специфическим приложением или всеми
приложениями.
LRESULT
CALLBACK MessageProc(
int
code, // Код ловушки
WPARAM
wParam, // Неопределено
LPARAM
lParam // Адрес структуры с данными сообщения
);
Параметры
Code
Определяет
тип входного события, которое генерировало
сообщение. Этот параметр может быть одно из
следующих значений:
Значение |
Описание |
MSGF_DDEMGR |
Входное событие
произошло, в то время как Библиотека Управлений
Динамических обменов данными (DDEML) ждала
окончания синхронной транзакции. Для подробной
информации относительно DDEML, см. Библиотеку
Управлений Динамических обменов данными (Dynamic Data
Exchange Management Library). |
MSGF_DIALOGBOX |
Входное событие
произошло в окне сообщения или диалоговом окне. |
MSGF_MENU |
Входное событие
произошло в меню |
MSGF_NEXTWINDOW |
Входное событие
произошло в результате нажатия пользователем ALT +
TAB, чтобы активизировать другое окно. |
MSGF_SCROLLBAR |
Входное событие
произошло в полосе прокрутки. |
Если code -
меньше нуля, процедура ловушки должна передать
управление функции CallNextHookEx без дальнейшей
обработки сообщения и возвратить значение,
возвращенное CallNextHookEx.
WParam
Должно
иметь значение NULL.
LParam
Указатель
на структуру MSG.
Возвращаемые
значения
Если
процедура ловушки обрабатывает сообщение,
возвращаемое значение должно быть отличное от
нуля. Иначе, должно быть нулем.
Заметки
Приложение
устанавливает процедуру ловушки, определяя тип
ловушки WH_MSGFILTER и адрес процедуры ловушки
обращаясь к функции SetWindowsHookEx.
Если
приложение, которое использует DDEML и выполняет
синхронные трансакции, должно обработать
сообщения прежде, чем оно будет послано, оно
должно использовать ловушку WH_MSGFILTER.
MessageProc
- метка - заполнитель для определенного
приложением имени функции.
Смотри
также
CallNextHookEx,
SetWindowsHookEx, MSG
MouseProc
Процедура
ловушки MouseProc - определенная приложением
библиотекой функция обратного вызова вызывается
системой всякий раз, когда из прикладной
программы вызваны функции GetMessage или PeekMessage и
имеется сообщение мыши, которое следует
обработать.
LRESULT
CALLBACK MouseProc(
int
nCode, // Код ловушки
WPARAM
wParam, // Идентификатор сообщения
LPARAM
lParam // Координаты мыши
);
Параметры
nCode
Определяет
код использования процедуры ловушки, чтобы
определить, как обработать сообщение. Этот
параметр может иметь одно из следующих значений:
Значение |
Описание |
HC_ACTION |
Параметры WParam и
lParam содержат информацию относительно сообщения
мыши. |
HC_NOREMOVE |
Параметры WParam и
lParam содержат информацию относительно сообщения
мыши, и сообщение мыши не было удалено из очереди
сообщений. (Приложение вызвало функцию PeekMessage,
определяя флажок PM_NOREMOVE.) |
Если nCode -
меньше нуля, процедура ловушки должна передать
управление функции CallNextHookEx без дальнейшей
обработки сообщения и должна возвратить
значение, возвращенное CallNextHookEx.
wParam
Определяет
идентификатор сообщения мыши.
lParam
Указывает
на структуру MOUSEHOOKSTRUCT.
Возвращаемые
значения
Чтобы
давать возможность системе обработать
сообщение, возвращаемое значение должно быть
нулем. Чтобы отбросить сообщение, возвращаемое
значение должно быть отлично от нуля.
Заметки
Процедура
ловушки не должна установить функцию повторного
вызова JournalPlaybackProc.
Приложение
устанавливает процедуру ловушки, определяя тип
ловушки WH_MOUSE и адрес процедуры ловушки обращаясь
к функции SetWindowsHookEx.
Смотри
также:
CallNextHookEx,
GetMessage, JournalPlaybackProc, MOUSEHOOKSTRUCT, PeekMessage, SetWindowsHookEx.
SetWindowsHookEx
Функция
SetWindowsHookEx устанавливает определенную
приложением процедуру ловушки в цепочку ловушек.
Приложение устанавливает процедуру ловушки,
чтобы контролировать некоторые типы событий в
системе. Процедура ловушки может контролировать
события, связанные со специфической нитью или со
всеми нитями в системе. Эта функция отменяет
функцию SetWindowsHook.
HHOOK
SetWindowsHookEx(
int
idHook, // Тип устанавливаемой ловушки
HOOKPROC
lpfn, // Адрес процедуры ловушки
HINSTANCE
hMod, // Дескриптор образца приложения
DWORD
dwThreadId // Идентификатор нити, для которой
установить ловушку
);
Параметры
idHook
Определяет
тип процедуры ловушки, которая будет
установлена. Этот параметр можетиметь одно из
следующих значений:
Значение |
Описание |
WH_CALLWNDPROC |
Устанавливает
процедуру ловушки, которая контролирует
сообщения прежде, чем система посылает его
процедуре окна адресата. Для подробной
информации, см. процедуру ловушки CallWndProc. |
WH_CALLWNDPROCRET |
Устанавливает
процедуру ловушки, которая контролирует
сообщения после того, как они были обработаны
процедурой окна адресата. Для подробной
информации, см. процедуру ловушки CallWndRetProc. |
WH_CBT |
Устанавливает
процедуру ловушки, которая получает уведомления,
полезные для обучающих приложений (CBT). Для
подробной информации, см. процедуру ловушки CBTPROC. |
WH_DEBUG |
Устанавливает
процедуру ловушки, полезную для отладки других
процедур ловушки. Для подробной информации, см.
процедуру ловушки DebugProc. |
WH_GETMESSAGE |
Устанавливает
процедуру ловушки, которая контролирует
сообщения, зарегистрированные в очереди
сообщений. Для подробной информации, см.
процедуру ловушки GetMsgProc. |
WH_JOURNALPLAYBACK |
Устанавливает
процедуру ловушки, которая регистрирует
сообщения, предварительно записанные процедурой
ловушки WH_JOURNALRECORD. Для подробной информации, см.
процедуру ловушки JournalPlaybackProc. |
WH_JOURNALRECORD |
Устанавливает
процедуру ловушки, которая записывает входные
сообщения, зарегистрированные в очереди
сообщений системы. Эта ловушка полезна для
записи макрокоманд. Для подробной информации, см.
процедуру ловушки JournalRecordProc. |
WH_KEYBOARD |
Устанавливает
процедуру ловушки, которая контролирует
сообщения нажатия клавиш. Для подробной
информации, см. процедуру ловушки KeyboardProc. |
WH_MOUSE |
Устанавливает
процедуру ловушки, которая контролирует
сообщения мыши. Для подробной информации, см.
процедуру ловушки MouseProc. |
WH_MSGFILTER |
Устанавливает
процедуру ловушки, которая контролирует
сообщения, сгенерированные в результате
входного события в диалоговом окне, окне
сообщения, меню, или полосе прокрутки. Для
подробной информации, см. процедуру ловушки
MessageProc. |
WH_SHELL |
Устанавливает
процедуру ловушки, которая получает уведомления,
полезные для приложений оболочки. Для подробной
информации, см. процедуру ловушки ShellProc. |
WH_SYSMSGFILTER |
Устанавливает
процедуру ловушки, которая контролирует
сообщения, сгенерированные в результате
входного события в диалоговом окне, окне
сообщения, меню, или полосе прокрутки. Процедура
ловушки контролирует эти сообщения для всех
приложений в системе. Для подробной информации,
см. процедуру ловушки SysMsgProc. |
lpfn
Указывает
на процедуру ловушки. Если dwThreadId параметр, равен
нулю или определяет идентификатор нити,
созданного другим процессом, параметр lpfn должен
указать на процедуру ловушки в библиотеке
динамических связей (DLL). Иначе, lpfn может
указывать на процедуру ловушки в коде, связанном
с текущим процессом.
hMod
Идентифицирует
DLL, содержащую процедуру ловушки, на которую
указывает параметр lpfn. Параметр hMod должен быть
установлен как NULL, если параметр dwThreadId
определяет нить, созданную текущим процессом и
если процедура ловушки - внутри кода, связанного
с текущим процессом.
dwThreadId
Определяет
идентификатор нити, с которым процедура ловушки
должна быть связана. Если этот параметр - нуль, то
процедура ловушки связана со всеми
существующими нитями.
Возвращаемые
значения
Если
функция обработана, возвращаемое значение -
дескриптор процедуры ловушки.
Если
запрос провален, возвращаемое значение NULL.
Заметки
Ошибка
может происходить, если параметр hMod равен NULL, и
параметр dwThreadId - нуль или определяет
идентификатор нити, созданного другим процессом.
Формирование
цепочки к следующей процедуре ловушки (то есть
вызыв функции CallNextHookEx) по выбору. Приложение или
библиотека может вызывать следующую процедуру
ловушки или прежде или после любой обработки в
собственной процедуре ловушки. Хотя
формирование цепочки на следующую ловушку
выборочно, это строго рекомендуется; иначе,
другие приложения, которые установили ловушки,
не будут получать уведомления ловушки и могут в
результате вести себя неправильно.
Перед
завершением, приложение должно вызвать функцию
UnhookWindowsHookEx, чтобы освободить ресурсы, связанные с
ловушкой.
Контекст
ловушки зависит от типа ловушки. Некоторые
ловушки могут быть установлены только с
контекстом системы; другие могут также быть
установлены только для специфической нити, как
показано в следующем списке:
Ловушка |
Контекст |
WH_CALLWNDPROC |
Thread or system |
WH_CBT |
Thread or system |
WH_DEBUG |
Thread or system |
WH_GETMESSAGE |
Thread or system |
WH_JOURNALPLAYBACK |
System only |
WH_JOURNALRECORD |
System only |
WH_KEYBOARD |
Thread or system |
WH_MOUSE |
Thread or system |
WH_MSGFILTER |
Thread or system |
WH_SHELL |
Thread or system |
WH_SYSMSGFILTER |
System only |
Для
определенного типа ловушки, сначала вызываются
ловушки нити, затем ловушки системы.
Ловушки
системы - общедоступнный ресурс, и их установка
воздействует на все приложения. Все системные
функции ловушки должны быть в библиотеках (DLL).
Системные ловушки должны быть ограничены
приложениями специального назначения или
использоваться как помощь в разработке и в
течение отладки приложения. Библиотеки, которые
больше не нуждаются в ловушках, должны удалить
процедуры ловушек.
Смотри
также
CallNextHookEx,
CallWndProc, CallWndRetProc, CBTProc, DebugProc, GetMsgProc, JournalPlaybackProc,
JournalRecordProc, KeyboardProc, MouseProc, MessageProc, ShellProc, SysMsgProc,
UnhookWindowsHookEx.
ShellProc
Процедура
ловушки ShellProc - определенная приложением или
библиотекой функция обратного вызова
используется приложениями оболочками, чтобы
получать полезные уведомления от системы.
LRESULT
CALLBACK ShellProc(
int
nCode, // Код ловушки
WPARAM
wParam, // Специфическая для события информация
LPARAM
lParam // Специфическая для события информация
);
Параметры
nCode
Определяет
код ловушки. Этот параметр может быть одно из
следующих значений:
Значение |
Описание |
HSHELL_ACTIVATESHELLWINDOW |
Оболочка должна
активизировать основное окно. |
HSHELL_GETMINRECT |
Только для Windows 95:
окно минимизируется или максимизируется, и
система нуждается в координатах
минимизированного прямоугольника для окна. WParam
параметр содержит дескриптор окна, и параметр
lParam содержит адрес структуры RECT, которая
получает координаты. |
HSHELL_LANGUAGE |
Только для Windows 95:
язык был изменен, или была загружена новая
раскладка клавиатуры. |
HSHELL_REDRAW |
Только для Windows 95:
заголовок окна на панели задач был повторно
выведен. WParam параметр содержит дескриптор окна. |
HSHELL_TASKMAN |
Только для Windows 95:
пользователь выбрал список задач. WParam параметр
неопределен и должен игнорироваться. Приложение
оболочка, которое обеспечивает список задач,
должно возвратить TRUE, чтобы предотвратить
систему от показа списка задач. |
HSHELL_WINDOWACTIVATED |
Только для Windows 95:
Активизировалось окно. WParam параметр содержит
дескриптор окна. |
HSHELL_WINDOWCREATED |
Окно верхнего
уровня, ненаходящееся в собственности было
создано. Окно уже существует когда система
вызовет функцию ShellProc. |
HSHELL_WINDOWDESTROYED |
Окно верхнего
уровня, ненаходящееся в собственности
собирается быть разрушенным. Окно все еще
существует когда система вызовет функцию ShellProc. |
Если nCode - меньше
нуля, процедура ловушки должна передать
управление функции CallNextHookEx без дальнейшей
обработки сообщения и должна возвратить
значение, возвращенное CallNextHookEx.
wParam
Определяет
дополнительную информацию, которая может
понадобиться приложению оболочке. Если параметр
nCode - HSHELL_ACTIVATESHELLWINDOW, то параметр wParam не
используется. Если nCode - HSHELL_WINDOWCREATED или
HSHELL_WINDOWDESTROYED, wParam определяет дескриптор окна,
создаваемого или разрушенного, соответственно.
lParam
Windows
95:
Определяет
дополнительную информацию. Точное значение
зависит от значения параметра nCode. Если nCode -
HSHELL_GETMINRECT, lParam - LPRECT. Если nCode - HSHELL_WINDOWSACTIVATED, lParam -
fFullScreen. Если nCode - HSHELL_REDRAW, lParam - fNewFlash.
Windows
NT:
Этот
параметр должен быть нулем.
Возвращаемые
значения
Возвращаемое
значение должно быть нулем
Заметки
Приложение
устанавливает процедуру ловушки, определяя тип
ловушки WH_SHELL и адрес процедуры ловушки обращаясь
к функции SetWindowsHookEx.
ShellProc
- метка - заполнитель для определенного
приложением или определенного библиотекой имени
функции.
Смотри
также
CallNextHookEx,
SendMessage, SetWindowsHookEx
SysMsgProc
Процедура
ловушки SysMsgProc - определенная библиотекой функция
обратного вызова вызывается системой после того,
как входное событие происходит в диалоговом
окне, окне сообщения, меню, или полосе прокрутки,
но прежде, чем сообщение, сгенерированное
входным событием будет обработано. Процедура
ловушки может контролировать сообщения для
любого диалогового окна, окна сообщения, меню,
или полосы прокрутки в системе.
LRESULT
CALLBACK SysMsgProc(
int
nCode, // Флаг сообщения
WPARAM
wParam, // Неопределено
LPARAM
lParam // Адрес структуры с данными о сообщении
);
Параметры
nCode
Определяет
тип входного события, которое генерировало
сообщение. Этот параметр можетиметь одно из
следующих значений:
Значение |
Описание |
MSGF_DIALOGBOX |
Входное событие
произошло в окне сообщения или диалоговом окне. |
MSGF_MENU |
В меню |
MSGF_SCROLLBAR |
Для полосы
прокрутки |
MSGF_NEXTWINDOW |
Входное событие
произошло в результате нажатия пользователем
комбинации ALT + Tab, чтобы активизировать другое
окно. |
Если nCode -
меньше нуля, процедура ловушки должна передать
управление к функции CallNextHookEx без дальнейшей
обработки сообщения и должна возвратить
значение, возвращенное CallNextHookEx.
WParam
Должно
быть NULL.
LParam
Указывает
на структуру сообщения MSG.
Возвращаемые
значения
Если
процедура ловушки обрабатывает сообщение,
возвращаемое значение должно быть отлично от
нуля. Иначе, должно быть нулем.
Заметки
Приложение
устанавливает процедуру ловушки, определяя тип
ловушки как WH_SYSMSGFILTER и адрес процедуры ловушки
обращаясь к функции SetWindowsHookEx.
SysMsgProc
- метка - заполнитель для определенного
библиотекой имени функции.
См.
Также
CallNextHookEx,
СООБЩЕНИЕ, SetWindowsHookEx
UnhookWindowsHookEx
Функция
UnhookWindowsHookEx удаляет процедуру ловушки,
установленную в цепочку ловушок функцией
SetWindowsHookEx.
BOOL
UnhookWindowsHookEx (
HHOOK
hhk // дескриптор процедуры ловушки, которую нужно
удалить
);
Параметры
Hhk
Идентифицирует
ловушку, которая будет удалена. Этот параметр -
дескриптор ловушки, полученный предыдущим
обращением к функции SetWindowsHookEx.
Возвращаемые
значения
Если
функция отрабатывает успешно, возвращаемое
значение отлично от нуля.
Если
функция потерпел акрах, возвращаемое значение -
нуль.
Заметки
Процедура
ловушки может быть в таком состоянии, что ее
вызвали другой нитью даже после возврата из
UnhookWindowsHookEx. Если процедура ловушки не вызывается
сразу, то она будет немедленно удалена, не
дожидаясь возврата из UnhookWindowsHookEx. |