当前位置:
文档之家› hook捕捉鼠标的键盘的操作
hook捕捉鼠标的键盘的操作
HOOK技术,对大家来说,应该不是很陌生吧,在我们日常的工作中,或多或少会去捕捉鼠标的移动轨迹或者键盘的操作,此时hook就派上用场了,hook的使用很简单:
1:建立hook(用于捕捉鼠标的操作)
BOOL InstallHook()
{
hinst = AfxGetInstanceHandle();
hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)LowLevelMouseProc, hinst, 0);//标注的是调用hook响应函数
};
}
switch(wParam)
{
case WM_LBUTTONDOWN:
case WM_LBUTTONUP:
case WM_MBUTTONDOWN:
case WM_MBUTTONUP:
case WM_RBUTTONDOWN:
case WM_RBUTTONUP:
PostMessage(hwnd, WM_USER+wParam, 0, 0);
break;
case WM_MOUSEMOVE:
PostMessage(hwnd, WM_USER+wParam, mhsLParam->pt.x, mhsLParam->pt.y);
break;
}
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);
if(!hMouseHook)
return false;
return true;
}
2:响应hook的函数
LRESULT CALLBACK LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
FILE *fp = NULL;
HWND hwnd;
}
3:在使用完后,要将hook释放掉!
总结:
在使用SetWindowsHook截获鼠标事件时,如果使用WH_MOUSE参数,则只能监控钩子所在模块的鼠标事件。如需要截获整个系统的鼠标事件,那么使用WH_MOUSE_LL参数。
MSLLHOOKSTRUCT *mhsLParam;
mhsLParam = (MSLLHOOKSTRUCT*)(lParam);
if (nCode < 0)// do not process the message
{
return CallNextHookEx(hMouseHook, nCode, wParam, lParam);