Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Описание
Определяемая приложением или библиотекой функция обратного вызова, используемая с функцией SetWindowsHookEx . Функция записывает сообщения, которые система удаляет из очереди системных сообщений. Позже приложение может использовать процедуру перехватчика JournalPlaybackProc для воспроизведения сообщений.
Тип HOOKPROC определяет указатель на эту функцию обратного вызова. JournalRecordProc — это заполнитель для имени функции, определяемой приложением или библиотекой.
LRESULT CALLBACK JournalRecordProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Параметры
code [in]
Тип: int
Указывает способ обработки сообщения. Если код меньше нуля, процедура перехватчика должна передать сообщение функции CallNextHookEx без дальнейшей обработки и возвращать значение, возвращаемое CallNextHookEx. Этот параметр может принимать одно из указанных ниже значений.
| Значение | Значение |
|---|---|
| HC_ACTION 0 | Параметр lParam является указателем на структуру EVENTMSG , содержащую сведения о сообщении, удаленном из системной очереди. Процедура перехватчика должна записывать содержимое структуры, скопировав его в буфер или файл. |
| HC_SYSMODALOFF 5 | Системно-модальное диалоговое окно было уничтожено. Процедура перехватчика должна возобновить запись. |
| HC_SYSMODALON 4 | Отображается системно-модальное диалоговое окно. Пока диалоговое окно не будет уничтожено, процедура перехватчика должна прекратить запись. |
wParam
Тип: WPARAM
Этот параметр не используется.
lParam [in]
Тип: LPARAM
Указатель на структуру EVENTMSG , содержащую записываемое сообщение.
Возвращаемое значение
Тип: LRESULT
Возвращаемое значение игнорируется.
Комментарии
Процедура перехватчика JournalRecordProc должна копировать, но не изменять сообщения. После того как процедура перехватчика вернет управление системе, сообщение продолжает обрабатываться.
Установите процедуру-перехватчик JournalRecordProc , указав тип WH_JOURNALRECORD и указатель на процедуру перехватчика в вызове функции SetWindowsHookEx .
Процедура перехватчика JournalRecordProc не должна быть в динамической библиотеке ссылок. Процедура-перехватчик JournalRecordProc может жить в самом приложении.
В отличие от большинства других глобальных процедур перехватчика, процедуры перехватчика JournalRecordProc и JournalPlaybackProc всегда вызываются в контексте потока, задающего перехватчик.
Приложение, которое установило процедуру перехватчика JournalRecordProc, должно watch для VK_CANCEL кода виртуального ключа (который реализуется в виде сочетания клавиш CTRL+BREAK на большинстве клавиатур). Этот код виртуального ключа должен интерпретироваться приложением как сигнал о том, что пользователь хочет прекратить запись журнала. Приложение должно ответить, завершив последовательность записи и удалив процедуру перехватчика JournalRecordProc . Удаление важно. Это предотвращает блокировку системы приложением журнала, висящим внутри процедуры перехватчика.
Эта роль в качестве сигнала для остановки записи journl означает, что сочетание клавиш CTRL+BREAK само по себе не может быть записано. Так как сочетание клавиш CTRL+C не имеет такой роли, как сигнал журнала, его можно записать. Есть еще два сочетания клавиш, которые не могут быть записаны: CTRL+ESC и CTRL+ALT+DEL. Эти два сочетания клавиш приводят к тому, что система останавливает все действия в журнале (запись или воспроизведение), удаляет все обработчики журнала и отправляет WM_CANCELJOURNAL сообщение в приложение для логирования.