LowLevelMouseProc
LowLevelMouseProc钩子过程是应用程序或库定义的回调函数,用于SetWindowsHookEx函数。每次一个新的鼠标输入事件将要被发送到一个线程输入队列中时系统调和这个函数。鼠标输入可能来自本地鼠标驱动也可能来自mouse_event函数。如果输入来自mouse_event,这个输入被称为“注入”。
LRESULT CALLBACK LowLevelMouseProc(
int nCode, // hook code
WPARAM wParam, // message identifier
LPARAM lParam // message data
);
LowLevelMouseProc只是一个占位符,开发者可以重命名。
参数:
nCode[in]用户根据这个值决定怎样去处理消息。可以取值为HC_ATITON。如果这个参数小于0,钩子过程必须把消息传给CallNextHookEx函数,不做进一步的处理并且返回CallNextHookEx函数的返回值。
wParam[in]鼠标消息标识符。可以是下列消息:WM_LBUTTONDOWN,WM_LBUTTONUP,
WM_MOUSEMOVE,WM_MOUSEWHEEL,WM_RBUTTONDOWN,WM_RBUTTONUP。
lParam[in]一个MSLLHOOKSTRUCT结构指针。
返回值
如果nCode参数小于0,返回CallNextHookEx函数的返回值。
如果nCode大于等于0,钩子过程不处理消息,非常推荐你调用CallNextHookEx函数并返回它的值;否则其它安装了WH_MOUSE_LL钩子的应用将不能收到钩子通知并且会引起不正确的结果。如果钩子过程处理消息,它可返回非0值防止系统把消息传递给其它钩子或目标窗口过程。
备注
这个钩子过程是在安装它的线程上下文中被调用。发送消息到线程时被调用,因此安装线程必须有消息循环。
钩子过程必须在小于LowLevelHooksTimeout指定的时间间隔内处理完成,如果在这个间隔内不能返回,系统将把消息传递给下一个钩子。LowLevelHooksTimeout是注册键HKEY_CURRENT_USER/Control Panel/Desktop下的子键,它的值为毫秒。
调试钩子不能跟踪该类钩子。