前几天刚好研究windows的Hook技术,看到博客堂也有人做了个键盘敲击统计的dot net软件,不禁好奇,也用VC做了一个。VC的技术文章毕竟是多,随便拉拉扯扯,又在原有的HOOK DLL中修修补补,就成了,
两个钩子的回调函数如下: static LRESULT CALLBACK msghook(UINT nCode,WPARAM wParam,LPARAM lParam) { ???? if(nCode < 0) ?{ /* pass it on */ ??::CallNextHookEx(hook,nCode,wParam,lParam); ??return 0; ?} /* pass it on */ ? if(nCode!=HC_NOREMOVE) ? { ??? if(wParam==WM_LBUTTONDBLCLK || wParam==WM_LBUTTONDOWN || ??? wParam==WM_RBUTTONDOWN || wParam==WM_MBUTTONDOWN || ??? wParam==WM_NCLBUTTONDBLCLK || wParam==WM_NCLBUTTONDOWN || ??? wParam==WM_NCRBUTTONDOWN || wParam==WM_NCMBUTTONDOWN ) ?? { ???//LPMOUSEHOOKSTRUCT msg = (LPMOUSEHOOKSTRUCT)lParam; ??? ::SendMessage(hWndTarget,UWM_MOUSEMINTOR,lParam); ?? } ? } ? ???? return ::CallNextHookEx(hook,lParam); } // msghook
static LRESULT CALLBACK kbhook(UINT nCode,LPARAM lParam) { ???? if(nCode < 0) ?{ /* pass it on */ ??::CallNextHookEx(hookb,lParam); ??return 0; ?} /* pass it on */ ?? if(nCode!=HC_NOREMOVE && (lParam>>31)==-1) //keydown //-1键盘释放对输入法类有效果,但键盘按下好像有问题的,改正为 -1,即键盘释放的意思 ? { ??//LPMOUSEHOOKSTRUCT msg = (LPMOUSEHOOKSTRUCT)lParam; ?? ::SendMessage(hWndTarget,UWM_KBMINTOR,lParam); ? } ? ???? return ::CallNextHookEx(hook,lParam); } // kb hook ? (编辑:北几岛)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|