Функция LowLevelMouseProc
Процедура фильтра (hook) LowLevelMouseProc
- определяемая программой или
определяемая библиотекой функция
повторного вызова, используемая функцией SetWindowsHookEx.
Система вызывает эту
функцию каждый раз, когда собирается
вставить новое событие ввода от мыши
в очередь ввода данных потока. Ввод от мыши может
исходить от
локального драйвера мыши или от
вызовов функции mouse_event. Если
ввод данных исходит из вызова mouse_event, ввод
данных "вставляется". Однако,
фильтр (hook) WH_MOUSE_LL не вставляется в другой
процесс. Вместо этого, контекст
переключается обратно в процесс, который
устанавливал фильтр (hook), и вызывается в
его первоначальном контексте. Затем
контекст переключается обратно в приложение,
которое создало событие.
Тип HOOKPROC
определяет указатель на эту функцию
повторного вызова. LowLevelMouseProc - это имя -
заместитель для определяемого программой
или определяемого библиотекой имени
функции.
Синтаксис
LRESULT CALLBACK LowLevelMouseProc( int nCode, WPARAM wParam, LPARAM lParam ); |
Параметры
nCode
[in] Устанавливает код использования процедуры фильтра (hook), чтобы решить, как обработать сообщение. Если nCode - меньше чем нуль, процедура фильтра (hook) должна переправить сообщение в функцию CallNextHookEx без дальнейшей обработки и должна возвратить значение, возвращенное CallNextHookEx. Этим параметром может быть одно из ниже перечисленных значений.Значение | Предназначение |
HC_ACTION | Параметры wParam и lParam содержат информацию о сообщении мыши. |
wParam
[in] Устанавливает идентификатор сообщения мыши. Этим параметром может быть одно из ниже перечисленных сообщений: WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN или WM_RBUTTONUP.lParam
[in] Указатель на структуру MSLLHOOKSTRUCT.Возвращаемое значение
Если nCode - меньше чем нуль, процедура фильтра (hook) должна возвратить значение, возвращенное CallNextHookEx.
Если nCode больше или равен нулю, а процедура фильтра (hook) не обрабатывала сообщение, очень рекомендуется, чтобы Вы вызвали CallNextHookEx и возвратили значение, которое она возвращает; в противном случае, другие прикладные программы, которые установили фильтры (hook) WH_MOUSE_LL, не будут получать уведомления фильтра (hook) и, в результате, могут повести себя неправильно. Если процедура фильтра (hook) обрабатывала сообщение, она может возвратить ненулевое значение, чтобы воспрепятствовать системе передавать сообщение в остальную часть цепочки фильтра (hook) или в целевую оконную процедуру.
Замечания
Приложение устанавливает процедуру фильтра (hook), определяя тип фильтра как WH_MOUSE_LL и указатель на процедуру фильтра при вызове функция SetWindowsHookEx.
Этот фильтр (hook) вызывается в контексте потока, который устанавливал его. Вызов делается при помощи отправки сообщения в поток, который устанавливал фильтр (hook). Поэтому, поток, который устанавливал фильтр, должен иметь цикл обработки сообщений.
Процедура фильтра (hook) должна обработать сообщение скорее, чем ввод данных, указанных в значении LowLevelHooksTimeout в следующем ниже ключе системного реестра:
HKEY_CURRENT_USER \Control Panel \Desktop |
Значение исчисляется в миллисекундах. Если процедура фильтра (hook) не возвращает значение в течение этого интервала, система переправит сообщение в следующий фильтр (hook).
Обратите внимание! на то, что отладочные фильтры не могут отслеживать этот тип фильтра (hook). |
Смотри также
Обзор Фильтр-процедуры (hooks) событий, Функции, используемые фильтрами (hook), CallNextHookEx, mouse_event, MSLLHOOKSTRUCT, SetWindowsHookEx, WH_MOUSE_LL, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, WM_MOUSEWHEEL, WM_RBUTTONDOWN, WM_RBUTTONUP
Размещение и совместимость LowLevelMouseProc |
|
---|---|
Windows. NET Server |
Да |
Windows XP |
Да |
Windows 2000 |
Да |
Windows NT |
Да версии 4.0 SP3 и выше |
Windows Me |
Нет |
Windows 98 |
Нет |
Windows 95 |
Нет |
Используемая библиотека |
Нет |
Заголовочный файл |
|
- объявлено в |
Winuser.h |
- включено в |
Windows.h |
Unicode |
Нет |
Замечания по платформе |
Не имеется |