c 语言鼠标钩子,线程钩子(鼠标钩子) | C/C++程序员之家

最近再看一些关于Hook方面的知识,这是一个线程钩子的实例(来源互联网):

步骤:

一、新建一个不使用文档/视结构的单文档应用hook1。打开childview.cpp文件,加入全局变量:

[cpp]HHOOK hHook;//鼠标钩子句柄

CPoint point;//鼠标位置信息

CChildView *pView;//鼠标钩子函数用到的输出窗口指针 [/cpp]

二、在CChildView::OnPaint()添加如下代码:

[cpp]CPaintDC dc(this); // 用于绘制的设备上下文

CString str;

str.Format(_T("x=%d,y=%d by:cplusplus.me"),point.x,point.y);

dc.TextOut(200,200,str); //显示字符串[/cpp]

三、在childview.cpp文件中定义全局的鼠标钩子函数。

[cpp]LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)

{//是鼠标移动消息

if(wParam==WM_MOUSEMOVE||wParam

==WM_NCMOUSEMOVE)

{

point=((MOUSEHOOKSTRUCT *)lParam)->pt;

//取鼠标信息

pView->Invalidate(); //窗口重画

}

return CallNextHookEx(hHook,nCode,wParam,lParam);

//传递钩子信息

}

[/cpp]

四、CChildView类的构造函数中安装钩子。

[cpp]pView=this;//获得输出窗口指针

hHook=SetWindowsHookEx(WH_MOUSE,MouseProc,0,GetCurrentThreadId()); [/cpp]

五、CChildView类的析构函数中卸载钩子。

[cpp]if(hHook)

UnhookWindowsHookEx(hHook); [/cpp]

运行结果:

01390f059c2058572c0b7691d4bd93cc.png

hook1

  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值