|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
SetWindowsHookEx
The SetWindowsHookEx function installs an application-defined hook procedure into a hook chain. An application installs a hook procedure to monitor the system for certain types of events. A hook procedure can monitor events associated either with a specific thread or with all threads in the system. This function supersedes the SetWindowsHook function.
HHOOK SetWindowsHookEx(
int idHook, // type of hook to install HOOKPROC lpfn, // address of hook procedure HINSTANCE hMod, // handle of application instance DWORD dwThreadId // identity of thread to install hook for );
Parameters
idHook
Specifies the type of hook procedure to be installed. This parameter can be one of the following values:
Value Description WH_CALLWNDPROC Installs a hook procedure that monitors messages before the system sends them to the destination window procedure. For more information, see the CallWndProc hook procedure. WH_CALLWNDPROCRET Installs a hook procedure that monitors messages after they have been processed by the destination window procedure. For more information, see the CallWndRetProc hook procedure. WH_CBT Installs a hook procedure that receives notifications useful to a computer-based training (CBT) application. For more information, see the CBTProc hook procedure. WH_DEBUG Installs a hook procedure useful for debugging other hook procedures. For more information, see the DebugProc hook procedure. WH_GETMESSAGE Installs a hook procedure that monitors messages posted to a message queue. For more information, see the GetMsgProc hook procedure. WH_JOURNALPLAYBACK Installs a hook procedure that posts messages previously recorded by a WH_JOURNALRECORD hook procedure. For more information, see the JournalPlaybackProc hook procedure. WH_JOURNALRECORD Installs a hook procedure that records input messages posted to the system message queue. This hook is useful for recording macros. For more information, see the JournalRecordProc hook procedure. WH_KEYBOARD Installs a hook procedure that monitors keystroke messages. For more information, see the KeyboardProc hook procedure. WH_MOUSE Installs a hook procedure that monitors mouse messages. For more information, see the MouseProc hook procedure. WH_MSGFILTER Installs a hook procedure that monitors messages generated as a result of an input event in a dialog box, message box, menu, or scroll bar. For more information, see the MessageProc hook procedure. WH_SHELL Installs a hook procedure that receives notifications useful to shell applications. For more information, see the ShellProc hook procedure. WH_SYSMSGFILTER Installs a hook procedure that monitors messages generated as a result of an input event in a dialog box, message box, menu, or scroll bar. The hook procedure monitors these messages for all applications in the system. For more information, see the SysMsgProc hook procedure.
lpfn
Points to the hook procedure. If the dwThreadId parameter is zero or specifies the identifier of a thread created by a different process, the lpfn parameter must point to a hook procedure in a dynamic-link library (DLL). Otherwise, lpfn can point to a hook procedure in the code associated with the current process.
hMod
Identifies the DLL containing the hook procedure pointed to by the lpfn parameter. The hMod parameter must be set to NULL if the dwThreadId parameter specifies a thread created by the current process and if the hook procedure is within the code associated with the current process.
dwThreadId
Specifies the identifier of the thread with which the hook procedure is to be associated. If this parameter is zero, the hook procedure is associated with all existing threads.
Return Values
If the function succeeds, the return value is the handle of the hook procedure. If the function fails, the return value is NULL.
Remarks
An error may occur if the hMod parameter is NULL and the dwThreadId parameter is zero or specifies the identifier of a thread created by another process. Chaining to the next hook procedure (that is, calling the CallNextHookEx function) is optional. An application or library can call the next hook procedure either before or after any processing in its own hook procedure. Although chaining to the next hook is optional, it is highly recommended; otherwise, the other applications that have installed hooks will not receive hook notifications and may behave incorrectly as a result.
Before terminating, an application must call the UnhookWindowsHookEx function to free system resources associated with the hook. The scope of a hook depends on the hook type. Some hooks can be set only with system scope; others can also be set for only a specific thread, as shown in the following list:
Hook Scope 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
For a specified hook type, thread hooks are called first, then system hooks. The system hooks are a shared resource, and installing one affects all applications. All system hook functions must be in libraries. System hooks should be restricted to special-purpose applications or to use as a development aid during application debugging. Libraries that no longer need a hook should remove the hook procedure.
See Also
CallNextHookEx, CallWndProc, CallWndRetProc, CBTProc, DebugProc, GetMsgProc, JournalPlaybackProc, JournalRecordProc, KeyboardProc, MouseProc, MessageProc, ShellProc, SysMsgProc, UnhookWindowsHookEx
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
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 должен быть установлен на НЕДЕЙСТВИТЕЛЬНЫЙ если параметр dwThreadId определяет резьбу созданную текущим процессом и если рычажная процедура - в пределах кода связанного текущим процессом.
dwThreadId
Определяет идентификатор резьбы с которой рычажная процедура должна быть связана. Если этот параметр является нулем, рычажная процедура связана всей существующей резьбой.
Обратные Величины
Если функция добивается успеха, обратная величина является ручкой рычажной процедуры. Если функция терпит неудачу, обратная величина НЕДЕЙСТВИТЕЛЬНА.
Замечания
Ошибка может произойти если параметр hMod НЕДЕЙСТВИТЕЛЕН и параметр dwThreadId является нулем или определяет идентификатор резьбы созданной другим процессом. Соединение в следующую рычажную процедуру (то есть, разговор функции CallNextHookEx), дополнительное. Приложение или библиотека могут вызвать следующую рычажную процедуру или перед или после любой обработки в своей собственной рычажной процедуре. Хотя подключаясь в следующий захват дополнительное, очень рекомендовано; в противном случае, другие приложения, которые установили захват не получит рычажные уведомления и может провестися себя неправильно в результате.
Перед завершением, приложение должно вызвать функцию UnhookWindowsHookEx, чтобы освобождать системные ресурсы связанные захватом. Область захвата зависит от рычажного типа. Некоторый захват может устанавливаться только с системной областью; другие могут также установлены для только специфической резьбы, как показано в следующем списка:
Рычажная Область Резьба WH_CALLWNDPROC или система WH_CBT Заправляются или системная Резьба WH_DEBUG или системная Резьба WH_GETMESSAGE или системная Система WH_JOURNALPLAYBACK только Система WH_JOURNALRECORD только Резьба WH_KEYBOARD или системная Резьба WH_MOUSE или системная Резьба WH_MSGFILTER или системная Резьба WH_SHELL или системная Система WH_SYSMSGFILTER только
Для определенного рычажного типа, захват резьбы вызван сначала, затем системный захват. Системный захват является коллективным ресурсом, и устанавливая один влияет на все приложения. Весь системный захват функционирует должно быть в библиотеках. Системный захват должен ограничиться специализированными приложениями или, чтобы использовать как помощь разработки в течение прикладной отладки. Библиотеки, что больше не нужно захват должен удалять рычажную процедуру.
Смотри Также
CallNextHookEx, CallWndProc, CallWndRetProc, CBTProc, DebugProc, GetMsgProc, JournalPlaybackProc, JournalRecordProc, KeyboardProc, MouseProc, MessageProc, ShellProc, SysMsgProc, UnhookWindowsHookEx
|
|
|
|
| |