|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Hook Procedures
To take advantage of a particular type of hook, the developer provides a hook procedure and uses the SetWindowsHookEx function to install it into the chain associated with the hook. A hook procedure must have the following syntax:
LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam)
HookProc is a placeholder for an application-defined name. The nCode parameter is a hook code that the hook procedure uses to determine the action to perform. The value of the hook code depends on the type of the hook; each type has its own characteristic set of hook codes. The values of the wParam and lParam parameters depend on the hook code, but they typically contain information about a message that was sent or posted. The SetWindowsHookEx function always installs a hook procedure at the beginning of a hook chain. When an event occurs that is monitored by a particular type of hook, Windows calls the procedure at the beginning of the hook chain associated with the hook. Each hook procedure in the chain determines whether to pass the event to the next procedure. A hook procedure passes an event to the next procedure by calling the CallNextHookEx function.
Note that the hook procedures for some types of hooks can only monitor messages. Windows passes messages to each hook procedure, regardless of whether a particular procedure calls CallNextHookEx. A hook procedure can be global, monitoring messages for all threads in the system, or it can be thread specific, monitoring messages for only an individual thread. A global hook procedure can be called in the context of any application, so the procedure must be in a separate dynamic-link library (DLL) module. A thread specific hook procedure is called only in the context of the associated thread. If an application installs a hook procedure for one of its own threads, the hook procedure can be in either the same module as the rest of the application's code or in a DLL. If the application installs a hook procedure for a thread of a different application, the procedure must be in a DLL. For information, see Dynamic-Link Libraries.
Note You should use global hooks only for debugging purposes; otherwise, you should avoid them. Global hooks hurt system performance and cause conflicts with other applications that implement the same type of global hook.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Процедуры Захвата
Чтобы иметь преимущество перед конкретным типом захвата, разработчик обеспечивает рычажную процедуру и использует функцию SetWindowsHookEx, чтобы устанавливать это в цепь связанную захватом. Рычажная процедура должна иметь следующий синтаксис:
LRESULT CALLBACK HookProc( int nCode, WPARAM wParam, LPARAM lParam)
HookProc - метка-заполнитель для определенного прикладного имени. Параметр nCode является рычажным кодом, что рычажная процедура использует, чтобы определять действие, чтобы выполняться. Величина рычажного кода зависит от типа захвата; каждый тип был установлен своя собственная характеристика рычажных кодов. Величины wParam и параметров lParam зависят от рычажного кода, но они обычно содержат информацию о сообщении, которое было послано или объявлено. Функция SetWindowsHookEx всегда устанавливает рычажную процедуру в начале рычажной цепи. Когда событие происходит, что проверено конкретным типом захвата, Windows вызывает процедуру в начале рычажной цепи связанную захватом. Каждая рычажная процедура в цепи определяет передавать событие в следующую процедуру. Рычажная процедура передает событие в следующую процедуру вызывая функцию CallNextHookEx.
Отметьте, что рычажные процедуры для некоторых типов захвата могут только проверить сообщения. Windows передает сообщения в каждую рычажную процедуру, независимо от того, что конкретная процедура вызывает CallNextHookEx. Рычажная процедура может быть глобальными, проверяющими сообщениями для всей резьбы в системе, или это может быть резьбой специфические, проверяющие сообщения для только индивидуальной резьбы. Глобальная рычажная процедура может быть приглашена контекст любого приложения, так что процедура должна быть на динамической связи отдельной библиотеки (DLL) модуля. Специфическая рычажная процедура резьбы вызывается только в контексте связанной резьбы. Если приложение устанавливает рычажную процедуру для одной из своей собственной резьбы, рычажная процедура может быть в или тот же модуль как остальная часть прикладного кода или в DLL. Если приложение устанавливает рычажную процедуру для резьбы другого приложения, процедура должна быть в DLL. Для информации, смотри Библиотеки Dynamic-Link.
Примечание, которое Вы должны использовать глобальный захват только для отладочных целей; в противном случае, Вы должны избегать их. Глобальный захват ранит системное исполнение и вызывает конфликты с другими приложениями, которые осуществляют тот же тип глобального захвата.
|
|
|
|
| |