Страница 13 из 34
Функция JournalRecordProc (ПроцедураЗаписиПротокола) Подключаемая процедура JournalRecordProc - функция повторного вызова, которая записывает сообщения, удаленные системой из системной очереди сообщений. Позже, прикладная программа может использовать подключаемую процедуру JournalPlaybackProc, чтобы воспроизвести сообщения. Синтаксис LRESULT CALLBACK JournalRecordProc ( int code,// код hook-точки WPARAM wParam,// не определяется LPARAM lParam// адрес обрабатываемого сообщения );
Параметры code Определяет, как обрабатывать сообщение. Этот параметр может быть одним из следующих значений: - HC_ACTION - Параметр lParam указывает на структуру EVENTMSG, которая содержит информацию о сообщении, удаленном из системной очереди. Подключаемая процедура должна записать содержимое структуры, путем копирования его в буфер или файл.
- HC_SYSMODALOFF - Системно- модальное диалоговое окно было разрушено. Подключаемая процедура должна возобновить запись.
- HC_SYSMODALON - Системно- модальное диалоговое окно было разрушено. До тех пор пока диалоговое окно является разрушенным, подключаемая процедура должна прекратить запись.
Если code является меньшим чем нуль, подключаемая процедура должна передать сообщение в функцию CallNextHookEx без дальнейшей его обработки и должна возвратить значение, возвращенное CallNextHookEx. wParam Определяет значение ПУСТО (NULL). lParam Указывает на структуру EVENTMSG, которая содержит сообщение, которое будет записано. Возвращаемые значения Возвращаемое значение игнорируется. Замечания Подключаемая процедура JournalRecordProc должна копировать, но не изменять сообщения. После того, как фильтр - процедура возвратит управление системе, обработка сообщения продолжится. Прикладная программа устанавливает подключаемую процедуру JournalRecordProc при помощи определения типа hook-точки как WH_JOURNALRECORD и ее адреса при вызове функции SetWindowsHookEx. Фильтр - процедура Win32 JournalRecordProc не должна находиться в динамически подключаемой библиотеке. Подключаемая процедура Win32 JournalRecordProc может находиться непосредственно в прикладной программе. В отличие от большинства других глобальных подключаемых процедур, фильтр - процедуры JournalRecordProc и JournalPlaybackProc всегда вызываются в контексте потока, который установил hook-точку. Прикладная программа, которая установила подключаемую процедуру JournalRecordProc, должна отслеживать виртуальный клавишный код VK_CANCEL (который реализуется у большинства клавиатур комбинацией клавиш CTRL+BREAK). Этот виртуальный клавишный код должен интерпретироваться прикладной программой как сигнал, что пользователь желает остановить запись протокола. Прикладная программа должна ответить окончанием записываемой последовательности и удалением подключаемой процедуры JournalRecordProc. Удаление важно. Оно предохраняет ведущую протокол прикладную программу от застопоривания системы, которое приводит к зависанию внутри фильтр - процедуры. Эта роль в качестве сигнала для остановки записи протокола, означает, что комбинация клавиш CTRL+BREAK не может самостоятельно быть записана. Поскольку комбинация клавиш CTRL+C не имеет подобной роли как сигнал к ведению протокола, она может быть записана. Имеются две других комбинации клавиш, которые не могут быть записаны: CTRL+ESC и CTRL+ALT+DEL. Эти две комбинации клавиш заставляют систему остановить все ведущие протокол действия (запись или считывание), удалить все ведущие протокол hook-точки и известить о сообщении WM_CANCELJOURNAL ведущую протокол прикладную программу. JournalRecordProc является меткой-заместителем для определяемого программой или определяемого библиотекой имени функции. Смотри также CallNextHookEx, EVENTMSG, JournalPlaybackProc, SetWindowsHookEx, WM_CANCELJOURNAL Размещение и совместимость JournalRecordProc Windows NTДа Win95Да Win32sДа Импортируемая библиотекаОпределяется пользователем Заголовочный файлwinuser.h UnicodeНет Замечания по платформеHOOKPROC
|