SetWindowsHookEx winapi

WinApi Процедура SetWindowsHookEx

Описание:
function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK;

Функция SetWindowsHookEx устанавливает определенную приложением процедуру ловушки в цепочку ловушек. Приложение устанавливает процедуру ловушки, чтобы контролировать некоторые типы событий в системе. Процедура ловушки может контролировать события, связанные со специфической нитью или со всеми нитями в системе.

Параметры:
idHook: Определяет тип процедуры ловушки, которая будет установлена. Этот параметр может иметь одно из значений WH_.

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). Системные ловушки должны быть ограничены приложениями специального назначения или использоваться как помощь в разработке и в течение отладки приложения. Библиотеки, которые больше не нуждаются в ловушках, должны удалить процедуры ловушек.

Материал взят из:
Русская спpавка по Windows API



Последние из рубрики

ОтменитьДобавить комментарий