|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
CBTProc
The CBTProc hook procedure is an application-defined or library-defined callback function that the system calls before activating, creating, destroying, minimizing, maximizing, moving, or sizing a window; before completing a system command; before removing a mouse or keyboard event from the system message queue; before setting the keyboard focus; or before synchronizing with the system message queue. The value returned by the hook procedure determines whether Windows allows or prevents one of these operations. A computer-based training (CBT) application uses this hook procedure to receive useful notifications from the system.
LRESULT CALLBACK CBTProc(
int nCode, // hook code WPARAM wParam, // depends on hook code LPARAM lParam // depends on hook code );
Parameters
nCode
Specifies a code that the hook procedure uses to determine how to process the message. This parameter can be one of the following values:
Value Meaning HCBT_ACTIVATE The system is about to activate a window. HCBT_CLICKSKIPPED The system has removed a mouse message from the system message queue. Upon receiving this hook code, a CBT application must install a WH_JOURNALPLAYBACK hook procedure in response to the mouse message. HCBT_CREATEWND A window is about to be created. The system calls the hook procedure before sending the WM_CREATE or WM_NCCREATE message to the window. If the hook procedure returns a nonzero value, the system destroys the window; the CreateWindow function returns NULL, but the WM_DESTROY message is not sent to the window. If the hook procedure returns zero, the window is created normally. At the time of the HCBT_CREATEWND notification, the window has been created, but its final size and position may not have been determined and its parent window may not have been established. It is possible to send messages to the newly created window, although it has not yet received WM_NCCREATE or WM_CREATE messages. It is also possible to change the position in the Z order of the newly created window by modifying the hwndInsertAfter member of the CBT_CREATEWND structure. HCBT_DESTROYWND A window is about to be destroyed. HCBT_KEYSKIPPED The system has removed a keyboard message from the system message queue. Upon receiving this hook code, a CBT application must install a WH_JOURNALPLAYBACK_hook hook procedure in response to the keyboard message. HCBT_MINMAX A window is about to be minimized or maximized. HCBT_MOVESIZE A window is about to be moved or sized. HCBT_QS The system has retrieved a WM_QUEUESYNC message from the system message queue. HCBT_SETFOCUS A window is about to receive the keyboard focus. 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.
If nCode is less than zero, the hook procedure must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.
wParam
Depends on the nCode parameter. For details, see the following Remarks section.
lParam
Depends on the nCode parameter. For details, see the following Remarks section.
Return Values
For operations corresponding to the following CBT hook codes, the return value must be 0 to allow the operation, or 1 to prevent it: HCBT_ACTIVATE HCBT_CREATEWND HCBT_DESTROYWND HCBT_MINMAX HCBT_MOVESIZE HCBT_SETFOCUS HCBT_SYSCOMMAND For operations corresponding to the following CBT hook codes, the return value is ignored: HCBT_CLICKSKIPPED HCBT_KEYSKIPPED HCBT_QS
Remarks
The hook procedure should not install a WH_JOURNALPLAYBACK_hook hook procedure except in the situations described in the preceding list of hook codes. This hook procedure must be in a dynamic-link library (DLL). An application installs the hook procedure by specifying the WH_CBT hook type and the address of the hook procedure in a call to the SetWindowsHookEx function. The following table describes the wParam and lParam parameters for each HCBT_ hook code:
Value wParam lParam HCBT_ACTIVATE Specifies the handle to the window about to be activated. Specifies a long pointer to a CBTACTIVATESTRUCT structure containing the handle to the active window and specifies whether the activation is changing because of a mouse click. HCBT_CLICKSKIPPED Identifies the mouse message removed from the system message queue. Specifies a long pointer to a MOUSEHOOKSTRUCT structure containing the hit-test code and the handle to the window for which the mouse message is intended. The HCBT_CLICKSKIPPED value is sent to a CBTProc hook procedure only if a WH_MOUSE hook is installed. For a list of hit-test codes, see WM_NCHITTEST . HCBT_CREATEWND Specifies the handle to the new window. Specifies a long pointer to a CBT_CREATEWND structure containing initialization parameters for the window. The parameters include the coordinates and dimensions of the window. By changing these parameters, a CBTProc hook procedure can set the initial size and position of the window. HCBT_DESTROYWND Specifies the handle to the window about to be destroyed. Is undefined and must be set to zero. HCBT_KEYSKIPPED Identifies the virtual-key code. Specifies the repeat count, scan code, key-transition code, previous key state, and context code. The HCBT_KEYSKIPPED value is sent to a CBTProc hook procedure only if a WH_KEYBOARD hook is installed. For more information, see the WM_KEYUP or WM_KEYDOWN message. HCBT_MINMAX Specifies the handle to the window being minimized or maximized. Specifies, in the low-order word, a show-window value (SW_) specifying the operation. For a list of show-window values, see the ShowWindow. The high-order word is undefined. HCBT_MOVESIZE Specifies the handle to the window to be moved or sized. Specifies a long pointer to a RECT structure containing the coordinates of the window. By changing the values in the structure, a CBTProc hook procedure can set the final coordinates of the window. HCBT_QS Is undefined and must be zero. Is undefined and must be zero. HCBT_SETFOCUS Specifies the handle to the window gaining the keyboard focus. Specifies the handle to the window losing the keyboard focus. HCBT_SYSCOMMAND Specifies a system-command value (SC_) specifying the system command. For more information about system-command values, see WM_SYSCOMMAND. Contains the same data as the lParam value of a WM_SYSCOMMAND message: If a system menu command is chosen with the mouse, the low-order word contains the x-coordinate of the cursor, in screen coordinates, and the high-order word contains the y-coordinate; otherwise, the parameter is not used.
CBTProc is a placeholder for the application-defined or library-defined function name.
See Also
CallNextHookEx, CreateWindow, SetWindowsHookEx, WM_SYSCOMMAND
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
CBTProc
Процедура захвата CBTProc является определенным приложением или определившим библиотечную функцию возврата, что система называется перед активизацией, создающей, уничтожая, минимизируя, расширяя, перемещение, или измеряя окно; перед завершать системной команды; перед удаление мыши или клавишного случая из системной очереди сообщения; перед установкой клавишного фокуса; или перед синхронизацией с системной очередью сообщения. Величина возвращанная рычажной процедурой определяет что независимо Окно допускает или предохраняет одно из этих действий. Машинная подготовка приложения (CBT) использует эту рычажную процедуру, чтобы получать полезные уведомления из системы.
LRESULT CALLBACK CBTProc(
int nCode, // рычажный код WPARAM wParam, // зависит от рычажного кода LPARAM lParam // зависит от рычажного кода );
Параметры
nCode
Определяет код, что рычажная процедура использует, чтобы определять как, чтобы обрабатывать сообщение. Этот параметр может быть одним из следующего величин:
Значение Величины HCBT_ACTIVATE система собирается активизировать окно. HCBT_CLICKSKIPPED система удалила сообщение мыши из системной очереди сообщения. В получающем этом рычажном коде, приложение CBT должно установить процедуру захвата WH_JOURNALPLAYBACK в ответ на сообщение мыши. HCBT_CREATEWND окно собирается быть создано. Система вызывает рычажную процедуру перед посылка WM_CREATE или сообщение WM_NCCREATE в окно. Если рычажная процедура возвращает ненулевую величину, система уничтожает окно; функция CreateWindow возвращает НЕДЕЙСТВИТЕЛЬНЫЙ, но сообщение WM_DESTROY не послано в окно. Если рычажная процедура возвращает нуль, окно создается нормально. На момент уведомления HCBT_CREATEWND, окно создано, но конечный размер и позиция не может определено и родительское окно не может устанавливано. Возможно должно послать сообщения в вновь созданное окно, хотя это еще не получило WM_NCCREATE или сообщения WM_CREATE. Также возможно должно изменять позицию в порядке Z вновь созданного окна модифицируя член hwndInsertAfter структуры CBT_CREATEWND. HCBT_DESTROYWND окно собирается быть уничтожено. HCBT_KEYSKIPPED система удалила клавишное сообщение из системной очереди сообщения. В получающем этом рычажном коде, приложение CBT должно установить процедуру захвата WH_JOURNALPLAYBACK_hook в ответ на клавишное сообщение. HCBT_MINMAX окно собирается быть минимизировано или быть расширено. HCBT_MOVESIZE окно собирается быть перемещено или быть измерено. HCBT_QS система извлекла сообщение WM_QUEUESYNC из системной очереди сообщения. HCBT_SETFOCUS окно собирается получать клавишный фокус. HCBT_SYSCOMMAND системная команда собирается быть выполнена. Это позволяет приложение CBT, чтобы предохранять задачу, переключающуюся посредством горячих ключей.
Если nCode - менее чем нуль, рычажная процедура должна передать сообщение в функцию CallNextHookEx без продвигать обрабатывая и должна возвращать величину возвращанную CallNextHookEx.
wParam
Зависит от параметра nCode. Относительно деталей, смотри секцию Замечаний следующего.
lParam
Зависит от параметра nCode. Относительно деталей, смотри секцию Замечаний следующего.
Обратные Величины
Для действие соответствующий в рычажные коды следующего CBT, обратная величина должна быть 0, чтобы допускать действие, или 1, чтобы предохранять это: HCBT_ACTIVATE HCBT_CREATEWND HCBT_DESTROYWND HCBT_MINMAX HCBT_MOVESIZE HCBT_SETFOCUS HCBT_SYSCOMMAND Для действие соответствующий в рычажные коды следующего CBT, обратная величина проигнорирована: HCBT_CLICKSKIPPED HCBT_KEYSKIPPED HCBT_QS
Замечания
Рычажная процедура не должна устанавливать процедуру захвата WH_JOURNALPLAYBACK_hook за исключением ситуаций описанных в предыдущем списке рычажных кодов. Эта рычажная процедура должна быть на динамической связи библиотеки (DLL). Приложение устанавливает рычажную процедуру определяя рычажный тип WH_CBT и адрес рычажной процедуры на вызове в функцию SetWindowsHookEx. Следующий стол описывает wParam и параметры lParam для каждого рычажного кода HCBT_:
Величина wParam lParam HCBT_ACTIVATE Определяет ручку в окно вновь активизировавшее. Определяет длинный указатель в структуру CBTACTIVATESTRUCT содержа ручку в активное окно и определяет изменяется активизация из-за щелчка мыши. HCBT_CLICKSKIPPED Идентифицирует сообщение мыши удаленное из системной очереди сообщения. Определяет длинный указатель в структуру MOUSEHOOKSTRUCT содержа удар-тест кода и ручка в окно для которого сообщение мыши предположено. Величина HCBT_CLICKSKIPPED послана в процедуру захвата CBTProc только если захват WH_MOUSE установлен. Для списка удара-теста кодов, смотри WM_NCHITTEST. 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 неопределенный и должен - нулевым. Неопределенное и должно - нулевым. HCBT_SETFOCUS Определяет ручку в окно, получающее клавишный фокус. Определяет ручку в окно теряя клавишный фокус. HCBT_SYSCOMMAND Определяет системную-командную величину (SC_) определяя системную команду. Более подробно о системных-командных величинах, смотри WM_SYSCOMMAND. Содержит те же данные как величину lParam сообщения WM_SYSCOMMAND: Если системная команда меню выбрана мышью, младшее слово содержит x-coordinate курсора, в экранных координатах, и старшее слово содержит y-coordinate; в противном случае, параметр не использован.
CBTProc - метка-заполнитель для определенный приложение или определивший библиотечное функциональное имя.
Смотри Также
CallNextHookEx, CreateWindow, SetWindowsHookEx, WM_SYSCOMMAND
|
|
|
|
| |