中易网

谁能用c语言写一个钩子函数的例子

答案:2  悬赏:10  
解决时间 2021-01-14 09:21
谁能用c语言写一个钩子函数的例子
最佳答案
例子:
HWND hWnd = NULL; //定义成全局变量
HHOOK hKeyboard;
HHOOK hMouse;
LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lparam ) // 鼠标钩子函数
{
return 1; // 返回非零值表示已经对当前消息进行了处理,这样系统就不会再将这个消息传递给目标窗口过程
}
LRESULT CALLBACK KeyboardProc( int nCode, WPARAM wParam, LPARAM lparam )
if( VK_F4 == wParam && (1 == (lparam>>29&1)) ) // 系统后门:Alt+F4键退出程序
{
::SendMessageA( hWnd, WM_CLOSE, 0, 0 );

定义钩子函数
钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,系统会调用钩子函数进行处理。不同事件的钩子函数的形式是各不相同的。下面以鼠标钩子函数举例说明钩子函数的原型:
LRESULT CALLBACK HookProc(int nCode ,WPARAM wParam,LPARAM lParam)
参数wParam和 lParam包含所钩消息的信息,比如鼠标位置、状态,键盘按键等。nCode包含有关消息本身的信息,比如是否从消息队列中移出。 我们先在钩子函数中实现自定义的功能,然后调用函数 CallNextHookEx.把钩子信息传递给钩子链的下一个钩子函数。CallNextHookEx.的原型如下:
LRESULT CallNextHookEx( HHOOK hhk, int nCode, WPARAM wParam, LPARAM lParam ) 参数 hhk是钩子句柄。nCode、wParam和lParam 是钩子函数。
当然也可以通过直接返回TRUE来丢弃该消息,就阻止了该消息的传递。
全部回答
//键盘钩子处理函数。
    extern "C" LRESULT WINAPI KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam)
    {
    if( nCode >= 0 )
    {
    if( wParam == 0x79 )//当按下F10键
  {
CPoint newPoint,oldPoint;
   GetCursorPos(&oldPoint);
   newPoint.x = oldPoint.x 40;
   newPoint.y = oldPoint.y 10;
   SetCursorPos(newPoint.x,newPoint.y);
   mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);//模拟按下鼠标左键。
   mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);//模拟放开鼠标左键。
   keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),0,0); //按下SHIFT键。
   keybd_event(0x52,MapVirtualKey(0x52,0),0,0);//按下R键。
   keybd_event(0x52,MapVirtualKey(0x52,0),KEYEVENTF_KEYUP,0);//放开R键。
   keybd_event(VK_SHIFT,MapVirtualKey(VK_SHIFT,0),KEYEVENTF_KEYUP,0);//放开SHIFT键。
       SetCursorPos(oldPoint.x,oldPoint.y);
  }
    }
    return CallNextHookEx(glhHook,nCode,wParam,lParam);
    }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
部落冲突中5本要达到哪个程度才能升6本?
文明几好玩一些?
跪求神鬼传奇一个好听的名字!
为什么曹丕和曹睿都命短了
今年高考400分 在南京能上什么学校?
诺基亚c5-03显像管是什么求图
美好人生头疗美容养生馆地址好找么,我有些事
广场幼儿园(长安路)地址好找么,我有些事要过
∮_{x∈R|x²+1=0} 理由,
往生净土(西方极乐世界)的最大关键是什么?
请问太瘦了,怎么办
急求 锅具的材料与加工工艺 谢谢
w h a t colour is the pear是什么意思?
中国的德械师武器真的很先进么
如何查询一个贴吧的吧主和小吧主是谁
推荐资讯
花鲢吃饲料吗?
从首山出发到新西营里市场怎么走
某企业年初资产总额为126000元,负债总额为48
“残”字开头成语有哪些?
、在一条街上,有5座房子,喷了5种颜色。
在威海开一家十元店前景怎么样?
鞍山兰开艺术幼儿园地址好找么,我有些事要过
我今天终于明白`反恐行动为什么叫MAT了
汽车曲轴箱里加什么油
诚心找几个聊天的知心朋友
要离和五义士为什么能并称?
漂都还多音字组词
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?