MessageProc 函数
说明
与 SetWindowsHookExA SetWindowsHookExW函数一起使用的应用程序定义或库定义的回调函数。/ 在对话框、消息框、菜单或滚动条中发生输入事件之后,但在处理输入事件生成的消息之前,系统将调用此函数。 挂钩过程可以监视由特定应用程序或所有应用程序创建的对话框、消息框、菜单或滚动条的消息。
HOOKPROC 类型定义指向此回调函数的指针。 MessageProc 是应用程序定义或库定义的函数名称的占位符。
LRESULT CALLBACK MessageProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
参数
代码 [in]
类型: int
生成消息的输入事件的类型。
如果 代码 小于零,挂钩过程必须将消息传递到 CallNextHookEx 函数,而无需进一步处理,并返回 CallNextHookEx 返回的值。
此参数的取值可为下列值之一:
值 | 含义 |
---|---|
MSGF_DDEMGR 0x8001 | 当动态数据交换管理库 (DDEML) 等待同步事务完成时发生输入事件。 有关 DDEML 的详细信息,请参阅 动态数据交换管理库。 |
MSGF_DIALOGBOX 0 | 输入事件发生在消息框或对话框中。 |
MSGF_MENU 2 | 输入事件发生在菜单中。 |
MSGF_SCROLLBAR 5 | 输入事件发生在滚动条中。 |
wParam
类型:WPARAM
未使用此参数。
lParam [in]
类型:LPARAM
指向 MSG 结构的指针。
返回
类型: LRESULT
如果 代码 小于零,挂钩过程必须返回 CallNextHookEx 返回的值。
如果 代码 大于或等于零,并且挂钩过程未处理消息,强烈建议调用 CallNextHookEx 并返回它返回的值;否则,安装 WH_MSGFILTER 挂钩的其他应用程序将不会收到挂钩通知,因此行为可能不正确。 如果挂钩过程处理了消息,它可能会返回非零值,以防止系统将消息传递给挂钩链的其余部分或目标窗口过程。
注解
应用程序通过在调用 SetWindowsHookExA/ SetWindowsHookExW 函数中指定WH_MSGFILTER挂钩类型和指向挂钩过程的指针来安装挂钩过程。
如果使用 DDEML 并执行同步事务的应用程序必须在调度消息之前处理消息,则必须使用 WH_MSGFILTER 挂钩。