JournalPlaybackProc

WinApi Функция JournalPlaybackProc

Описание:
Function JournalPlaybackProc (nCode:integer; wParam, LPARAM:Longint):Longint;

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

Параметры:
nCode: Определяет код процедуры ловушки, используемый для определения способа обработки сообщения. Этот параметр может иметь одно из следующих значений:
HC_GETNEXT - Процедура ловушки должна копировать текущее сообщение мыши или сообщение клавиатуры в структуру TEventMsg, указатель на которую находиться в lParam.
HC_NOREMOVE - Приложение вызвало функцию PeekMessage с wRemoveMsg установленным как PM_NOREMOVE, указывая, что сообщение не удалено из очереди после обработки PeekMessage.

HC_SKIP - Процедура ловушки должна подготовиться скопировать следующее сообщение мыши или сообщение клавиатуры в структуру TEventMsg, на которую указывает lParam. После получения кода HC_GETNEXT, процедура ловушки должна копировать сообщение в структуру.
HC_SYSMODALOFF - Системно-модальное диалоговое окно было разрушено. Процедура ловушки должна продолжить воспроизводить сообщения.
HC_SYSMODALON - Системно-модальное диалоговое окно отображается. Пока диалоговое окно не разрушено, процедура ловушки должна прекратить воспроизводить сообщения.

Если nCode - меньше нуля, процедура ловушки должна передать управление функции CallNextHookEx без дальнейшей обработки и должна возвратить значение, возвращенное CallNextHookEx.

WParam: Определено как NULL.

LParam: Указывает на структуру TEventMsg, которая представляет собой сообщение, обрабатываемое процедурой ловушки. Этот параметр допустим только, когда параметр code - HC_GETNEXT.

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

Замечания
Процедура ловушки JournalPlaybackProc должна копировать входное сообщение к параметру lParam. Сообщение должно быть предварительно записано, используя процедуру ловушки JournalRecordProc, которая не должна изменять его.
Получается примерно то же самое, если бы вы захотели объехать все лучшие отели египта в своем классе за один день. Чтобы выполнять одно и то же сообщение много раз, процедура ловушки может называться несколько раз с набором параметров кодов к HC_GETNEXT без вмешивающегося обращения с code, равным HC_SKIP.
Если nCode - HC_GETNEXT, и возвращаемое значение больше нуля, система бездействует столько миллисекунд, сколько определено возвращаемым значением. Когда система пробуждается, то вызывает процедуру ловушки снова с code, равным HC_GETNEXT, чтобы восстановить то же самое сообщение. Возвращаемое значение от этого нового обращения до JournalPlaybackProc должно быть нуль; иначе, система опять будет бездействовать столько миллисекунд, сколько определено возвращаемым значением, вызывать JournalPlaybackProc снова, и так далее. Система может повиснуть.

В отличие от большинства других глобальных процедур ловушек, JournalRecordProc и JournalPlaybackProc - процедуры ловушки всегда вызвываемые контекстом нити, которая устанавливают ловушку.
После возврата управления системе, сообщение продолжает обработываться. Если code - HC_SKIP, процедура ловушки должна быть готова возвратить следующее записанное сообщение при следующем обращении.
Приложение устанавливает процедуру ловушки JournalPlaybackProc, определяя тип ловушки как WH_JOURNALPLAYBACK и адрес процедуры ловушки в обращении к функции SetWindowsHookEx.

Win32 JournalRecordProc не должна помещаться в DLL, она может находиться только непосредственно в приложении. Если пользователь нажимает CTRL+ESC или CTRL+ALT+DEL в течение воспроизведения журнала, система останавливает проигрыватель, отсоединяет процедуру проигрывателя журнала, и посылает сообщение WM_CANCELJOURNAL проигрывающему приложению.
Если процедура ловушки возвращает сообщение в диапазоне от WM_KEYFIRST до WM_KEYLAST, то применяются следующие условия:
> ParamL элемент структуры TEventMsg определяет виртуальный код клавиши, которая была нажата.

> ParamH элемент структуры TEventMsg определяет скан-код.
> Не имеется никакого способа определить счет repeast (?). Событие всегда возьмет представляющее событие клавиши.
JournalPlaybackProc - метка - заполнитель для определенного приложением или определенного библиотекой имени функции.

Материал взят из:
Русская спpавка по Windows API



Последние из рубрики

ОтменитьДобавить комментарий