JournalRecordProc 函数
说明
与 SetWindowsHookEx 函数一起使用的应用程序定义或库定义的回调函数。 函数记录系统从系统消息队列中删除的消息。 稍后,应用程序可以使用 JournalPlaybackProc 挂钩过程来播放消息。
HOOKPROC 类型定义指向此回调函数的指针。 JournalRecordProc 是应用程序定义的函数名称或库定义的函数名称的占位符。
LRESULT CALLBACK JournalRecordProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
参数
代码 [in]
类型: int
指定如何处理消息。 如果 代码 小于零,挂钩过程必须将消息传递给 CallNextHookEx 函数,而无需进一步处理,并且应返回 CallNextHookEx 返回的值。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
HC_ACTION 0 | lParam 参数是指向 EVENTMSG 结构的指针,其中包含有关从系统队列中删除的消息的信息。 挂钩过程必须通过将结构的内容复制到缓冲区或文件来记录结构的内容。 |
HC_SYSMODALOFF 5 | 系统模式对话框已被销毁。 挂钩过程必须恢复录制。 |
HC_SYSMODALON 4 | 正在显示系统模式对话框。 在销毁对话框之前,挂钩过程必须停止录制。 |
wParam
类型: WPARAM
未使用此参数。
lParam [in]
类型: LPARAM
指向包含要记录的消息的 EVENTMSG 结构的指针。
返回
类型: LRESULT
忽略返回值。
备注
JournalRecordProc 挂钩过程必须复制但不修改消息。 在挂钩过程将控制权返回给系统后,将继续处理该消息。
通过在调用 SetWindowsHookEx 函数时指定WH_JOURNALRECORD类型和指向挂钩过程的指针来安装 JournalRecordProc 挂钩过程。
JournalRecordProc 挂钩过程不需要位于动态链接库中。 JournalRecordProc 挂钩过程可以位于应用程序本身中。
与大多数其他全局挂钩过程不同, JournalRecordProc 和 JournalPlaybackProc 挂钩过程始终在设置挂钩的线程上下文中调用。
安装了 JournalRecordProc 挂钩过程的应用程序应watch VK_CANCEL虚拟键代码 (该代码在大多数键盘) 上实现为 CTRL+BREAK 组合键。 应用程序应将此虚拟密钥代码解释为用户希望停止日志记录的信号。 应用程序应通过结束记录序列并删除 JournalRecordProc 挂钩过程来做出响应。 删除很重要。 它防止日记应用程序通过在挂钩过程中挂起来锁定系统。
此角色作为停止 journl 录制的信号意味着无法记录 CTRL+BREAK 组合键本身。 由于 CTRL+C 组合键没有日记信号之类的作用,因此可以记录它。 有两个其他组合键无法记录:CTRL+ESC 和 CTRL+ALT+DEL。 这两个关键组合会导致系统停止所有日记活动 (录制或播放) ,删除所有日记挂钩,并将 WM_CANCELJOURNAL 消息发布到日记应用程序。