马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
所谓的钩子
就是SetWindowsHookEx
工程下载地址
大致思路是搞个钩子将WH_MOUSE截获 也可以截获WH_GetMOUSE 测试效果一样感觉还是WH_GetMOUSE效果好一点
要想搞全局的钩子那就必须放在DLL中
然后我们看看
SetWindowsHookEx这个函数
HHOOK SetWindowsHookEx(int idHook, // 待安装的勾子类型 HOOKPROC lpfn, // 回调函数地址 必须在DLL里边 HINSTANCE hMod, // 应用程序中包含回调函数lpfn的DLL句柄 DWORD dwThreadId //要安装勾子的线程,为0则是全局勾子,向所有线程注入 )
既然是鼠标钩子那我们就写
HHOOK hok; //全局变量
hok=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseProc,GetModuleHandle(_T("HookDll")),NULL);// HOOK安装函数
if(!hok) { return FALSE; } //如果注册失败返回FALSE g_dwThread=dwThread; return TRUE; //钩子注册成功返回TRUE
会调函数:
LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{ LRESULT lpesult=::CallNextHookEx(hok,nCode,wParam,lParam); if (g_dwThread>0)
{ POINT pt; static POINT ptold; ::GetCursorPos(&pt); if (pt.x!=ptold.x || pt.y!=ptold.y) { ::PostThreadMessage(g_dwThread,WM_MOUSE_ALL,0,MAKELPARAM(pt.x,pt.y)); ptold.x=pt.x; ptold.y=pt.y; } }
return lpesult; }
|