Функция JournalRecordProc


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

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

Синтаксис

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

Параметры

code

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

 

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

wParam

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

lParam

[in] Указатель на структуру EVENTMSG, которая содержит записываемое сообщение.

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

Возвращаемое значение игнорируется.

Замечания

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

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

Процедура фильтра (hook) JournalRecordProc не должна находиться в динамически подключаемой библиотеке (DLL). JournalRecordProc  может находится непосредственно в прикладной программе.

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

Приложение, которое установило процедуру фильтра (hook) JournalRecordProc, должно следить за кодом виртуальной клавиши VK_CANCEL (который, осуществляется как комбинация клавиш CTRL+BREAK на большинстве клавиатуры). Этот код виртуальной клавиши должен интерпретироваться приложением как сигнал, что пользователь желает остановить запись в журнал. Приложение должно ответить на него завершением записи последовательности и удалением процедуры фильтра (hook) JournalRecordProc. Удаление важно. Оно препятствует приложению ведущему журнал блокировать систему, "подвешивая" ее при помощи процедуры фильтра (hook).

Эта роль как сигнал, чтобы остановить запись в журнал, означает, что комбинация клавиш CTRL+BREAK сама не может быть записана. Так как комбинация клавиш CTRL+C не имеет такой роли, как сигнал ведения журнала, то эта комбинация может записаться. Есть еще две других комбинации клавиш, которые не могут записываться: это CTRL+ESC и CTRL+ALT+DEL. Эти две комбинации клавиш заставляют систему останавливать все действия ведения журнала (запись или воспроизведение), чтобы удалить все фильтры (hook), ведущие запись в журнал и послать сообщение WM_CANCELJOURNAL в приложение ведущее журнал.

Смотри также

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

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

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