请教一个全局钩子的问题
最近对钩子技术比较感兴趣,看了点资料自己倒腾个程序,碰到点问题向各位请教一下,挂钩子和撤销钩子没什么问题,主要问题是出在这里,我的目的是通过钩子来将鼠标右键事件变成左键事件左键事件变成右键事件(当然不用全局钩子也能做到,我主要是为了学习钩子技术),但是我做了以后发现左键事件能够改成右键事件而右键事件改不成左键事件,并且事件触发的位置也不对,找不到错在哪里请各位帮忙看一下代码,下面是我的钩子CALLBACK函数
LRESULT WINAPI MouseProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if (nCode >= 0)
{
if (wParam == WM_LBUTTONUP || wParam == WM_RBUTTONUP
|| wParam == WM_LBUTTONDOWN || wParam == WM_RBUTTONDOWN)
{
LPMOUSEHOOKSTRUCT lpMouse = (LPMOUSEHOOKSTRUCT) lParam;
HWND targetWnd = lpMouse->hwnd;
POINT pt = lpMouse->pt;
::ScreenToClient(targetWnd,&pt);
LPARAM newlParam = MAKEWORD(pt.x,pt.y);
if (wParam == WM_RBUTTONUP)
::SendMessage(targetWnd,WM_LBUTTONUP,
(WPARAM)lpMouse->wHitTestCode,newlParam);
else if (wParam == WM_LBUTTONUP)
::SendMessage(targetWnd,WM_RBUTTONUP,
(WPARAM)lpMouse->wHitTestCode,newlParam);
else if (wParam == WM_RBUTTONDOWN)
::SendMessage(targetWnd,WM_LBUTTONDOWN,
(WPARAM)lpMouse->wHitTestCode,newlParam);
else if (wParam == WM_LBUTTONDOWN)
::SendMessage(targetWnd,WM_RBUTTONDOWN,
(WPARAM)lpMouse->wHitTestCode,newlParam);
}
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
=================分割线=====================
顺便问一下各位,有没有什么书介绍钩子技术比较全面的,帮忙推荐一下