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



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

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