GetMsgProc 函数
与 SetWindowsHookExA/SetWindowsHookExW 函数一起使用的应用程序定义或库定义的回调函数。 每当 GetMessage 或 PeekMessageA/PeekMessageW 函数从应用程序消息队列中检索消息后,系统都会调用此函数。 在将检索到的消息返回到调用方之前,系统会将消息传递给钩子过程。
HOOKPROC 类型定义了指向此回调函数的指针。 GetMsgProc 是应用程序定义或库定义的函数名称的占位符。
LRESULT CALLBACK GetMsgProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
类型:int
指定钩子过程是否必须处理消息。 如果代码是 HC_ACTION,则钩子过程必须处理消息。 如果代码小于零,则钩子过程必须将消息传递给 CallNextHookEx 函数,而无需进一步处理,并且应返回 CallNextHookEx 返回的值。
类型:WPARAM
指定是否已从队列中删除消息。 此参数的取值可为下列值之一。
值 | 含义 |
---|---|
PM_NOREMOVE 0x0000 | 消息尚未从队列中删除。 (一个应用程序调用了 PeekMessage 函数,且指定 PM_NOREMOVE 标志。) |
PM_REMOVE 0x0001 | 消息已从队列中删除。 (一个应用程序调用了 GetMessage,或者它调用了 PeekMessage 函数,且指定 PM_REMOVE 标志。) |
类型:LPARAM
指向包含消息详细信息的 MSG 结构的指针。
如果代码小于零,则钩子过程必须返回 CallNextHookEx 返回的值。
如果代码大于或等于零,则强烈建议调用 CallNextHookEx 并返回它返回的值;否则,安装有 WH_GETMESSAGE 钩子的其他应用程序不会收到钩子通知,可能会因此出现错误行为。 如果钩子过程不调用 CallNextHookEx,则返回值应为零。
GetMsgProc 钩子过程可以查看或修改消息。
钩子过程将控制返回到系统后,GetMessage 或 PeekMessageA/PeekMessageW 函数返回消息以及对最初调用它的应用程序的任何修改。
应用程序安装此钩子过程,方法是指定 WH_GETMESSAGE 钩子类型以及指向对 SetWindowsHookExA/SetWindowsHookExW 函数的调用中的钩子过程的指针。