HOOK 钩子 键盘与鼠标 的一些参数疑惑
近来想学习一下HOOK ,在网上找到了一些有关的HOOK例子。经过自己调试后能用,感觉有点能够理解HOOK了。不过就是有些地方不明白的。想请教一下高手。
下面是我的一些代码,下面的地方不怎么懂。最不懂的就是那传进来的参数了 求高手帮讲解一下
//安装鼠标钩子,安装是没问题的,主要是MouseProc中的问题
SetWindowsHookEx(WH_MOUSE,MouseProc,glhInstance,0);
LRESULT WINAPI MouseProc(int nCode,WPARAM wparam,LPARAM lparam)
{
//传进来的三个参数,是怎么用的呢,哪位明白本质的高手能讲解一下吗,那三个参数到底代表着什么
//每次无论什么HOOK都是传这三个参数,可是我不知道这三个参数的意义啊
LPMOUSEHOOKSTRUCT pMouseHook=(MOUSEHOOKSTRUCT FAR *)lparam;
if (nCode>=0)//像这里我都不知道为什么要大于0
{
//取鼠标所在位置的窗口标题,实现的功能,这个倒容易,不是重点
}
return CallNextHookEx(Hook, nCode, wParam, lParam);
}
//安装键盘钩子
SetWindowsHookEx(WH_KEYBOARD,WH_MOUSE,(HOOKPROC)LauncherHook,theApp.m_hInstance,0);
LRESULT CALLBACK LauncherHook(int nCode,WPARAM wParam,LPARAM lParam)
{
//也是不明白这三个参数是怎么回事
//这个LauncherHook,每点击一次键盘都是运行两次的,为什么呢
if(nCode==HC_ACTION) //这个nCode是代表着什么,
{
if(lParam & 0x80000000) //为什么这样子写呢
{ //这个if里面键盘每点击一次就运行一次
char c[1];
c[0]=wParam;
SaveLog(c); //将此字符保存到TXT中
}
}
return CallNextHookEx(Hook, nCode, wParam, lParam);
}
[解决办法]
http://msdn.microsoft.com/zh-cn/library/ms644990(v=VS.85).aspx
这上面对每种钩子的回调函数参数意义都有解释