Функция JournalPlaybackProc


Процедура фильтра (hook) JournalPlaybackProc - это определяемая программой или определяемая библиотекой функция повторного вызова, используемая функцией SetWindowsHookEx. Как правило, приложение использует эту функцию, чтобы воспроизвести серию сообщений мыши и клавиатуры, предварительно зарегистрированных процедурой фильтра JournalRecordProc. Пока  процедура фильтра JournalPlaybackProc работает, обычный ввод данных от мыши и клавиатуры блокируется.

Тип HOOKPROC определяет указатель на эту функцию повторного вызова. JournalPlaybackProc - это имя - заместитель для определяемого программой или определяемого библиотекой имени функции.

Синтаксис

LRESULT CALLBACK JournalPlaybackProc(      
    int code,
    WPARAM wParam,
    LPARAM lParam
);

Параметры

code

[in] Устанавливает код использования процедуры фильтра (hook), чтобы решить, как обработать сообщение. Если code - меньше чем нуль, процедура фильтра (hook) должна передать сообщение в функцию CallNextHookEx без дальнейшей обработки и должна возвратить значение, возвращенное CallNextHookEx. Этим параметром может быть одно из ниже перечисленных значений.

 

Значение Предназначение
HC_GETNEXT Процедура фильтра (hook) должна копировать текущее сообщение мыши или  клавиатуры в структуру EVENTMSG, на которую указывает параметр lParam.
HC_NOREMOVE Приложение вызвало функцию PeekMessage с установкой параметра wRemoveMsg в PM_NOREMOVE, указывая, что сообщение не удалено из очереди сообщений после обработки PeekMessage.
HC_SKIP Процедура фильтра (hook) должна подготовиться скопировать следующее сообщение мыши или клавиатуры в структуру EVENTMSG, на которую указывает lParam. При приеме кода HC_GETNEXT, процедура фильтра (hook) должна скопировать сообщение в структуру.
HC_SYSMODALOFF Системное модальное диалоговое окно разрушилось. Процедура фильтра (hook) должна возобновить воспроизведение сообщений.
HC_SYSMODALON Системное модальное диалоговое окно показывается на экране. Пока диалоговое окно не разрушится, процедура фильтра (hook) должна прекратить воспроизводить сообщения.

wParam

Этот параметр не используется.

lParam

[in] Указатель на структуру EVENTMSG, которая представляет сообщение, обрабатываемое процедурой фильтра (hook). Этот параметр допустим только тогда, когда параметр кода - HC_GETNEXT.

Возвращаемое значение

 Чтобы система перед обработкой сообщения ожидала, возвращаемое значение должно быть временем, в тактах системных часов, которое система должна ждать. (Эта величина может быть подсчитана путем вычисления разницы между членами time в текущих и предыдущих сообщениях о вводе данных). Чтобы обработать сообщение немедленно, возвращаемое значение должно равняться нулю. Возвращаемое значение используется только в том случае, если код фильтра (hook) - HC_GETNEXT; в противном случае, оно игнорируется.

Замечания

Процедура фильтра (hook) JournalPlaybackProc  должна копировать сообщение о вводе данных в параметр lParam. Сообщение должно быть предварительно зарегистрированным, путем использования процедуры фильтра (hook) JournalRecordProc, которая не долженf изменять сообщение.

Чтобы извлекать данные об одном и том же сообщении много раз, процедура фильтра (hook) может вызываться несколько раз с установкой параметра code в HC_GETNEXT без промежуточного вызова с установкой code в HC_SKIP.

Если code - HC_GETNEXT и возвращаемое значение больше чем нуль, количество миллисекунд режима ожидания системы определяются возвращаемым значением. Когда система продолжает работу, она вызывает процедуру фильтра (hook) снова с установкой кода HC_GETNEXT, чтобы извлечь данные об одном и том же сообщении. Возвращаемое значение из этого нового вызова  JournalPlaybackProc должно быть нуль; в противном случае, система возвратится в режим ожидания на число миллисекунд, заданных возвращаемым значением, снова вызовет JournalPlaybackProc и так далее. Система, будет казаться в "подвешенном" состоянии.

В отличие от большинство других процедур глобального фильтра (hook), процедуры фильтра JournalRecordProc и JournalPlaybackProc всегда вызываются в контексте потока, который устанавливает фильтр (hook).

После того, как процедура фильтра (hook) возвращает управление системе, сообщение продолжает обрабатываться. Если code - HC_SKIP, процедура фильтра (hook) должна подготовиться возвратить значение следующего зарегистрированного сообщения события при его следующем вызове.

Устанавливайте процедуру фильтра (hook) JournalPlaybackProc, определяя тип фильтра WH_JOURNALPLAYBACK и указатель на эту процедуру при вызове функции SetWindowsHookEx.

Если пользователь нажимает CTRL+ESC или CTRL+ALT+DEL, в ходе воспроизведения журнала, система останавливает воспроизведение, отсоединяет процедуру воспроизведения журнала и посылает сообщение WM_CANCELJOURNAL в приложение ведущее журнал.

Если процедура фильтра (hook) возвращает сообщение в диапазоне от WM_KEYFIRST до WM_KEYLAST,  применяются ниже перечисленные условия:

Член paramL структуры EVENTMSG устанавливает код виртуальной клавиши, которая обрабатывалась.

Член paramH структуры EVENTMSG устанавливает код опроса клавиатуры (скэн-код).

Нет никакого способа установить подсчет повторов. Событие всегда берется так, чтобы обозначить одно событие клавиши.

Смотри также

Обзор Фильтр-процедуры (hooks) событий, Функции, используемые фильтрами (hook)CallNextHookExEVENTMSGJournalRecordProcPeekMessageSetWindowsHookEx, WM_CANCELJOURNAL

Размещение и совместимость JournalPlaybackProc

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Используемая библиотека

Нет

Заголовочный файл

 

- объявлено в

Winuser.h

- включено в

Windows.h

Unicode

Нет

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz