钩子简述

xjtuzhw 2005-04-25 02:11:41
最近做的一个软件需要截获其它进程的数据,所以用到了钩子函数

钩子是一个非常强大的工具,可以利用它很轻易的探测其它进程并且改变其他进程的行为。
钩子函数可以分为两类:局部和全局---局部钩子挂钩自己进程的事件;全局可以挂钩其他进程,全局钩子可以分为 1.基于线程(获取某一特定线程的事件);2.系统(捕捉系统所有进程的事件消息)。

钩子是一个比较影响系统性能的工具,在使用系统钩子的时候,系统处理所有相关事件都要调用该钩子函数,而且,在使用不当的时候,一旦钩子函数出了问题,其他相关进程必定受到影响,所以,钩子函数应该谨慎使用。

钩子的工作原理:创建一个钩子时, 系统在内存中创建一个包含钩子信息的数据结构,然后把该结构加入到钩子链表中。
钩子的安装使用:SetWindowsHookEx(int idHook,HOOKPROC lpfn,HINSTANCE hmod,
DWORD dwThreadId)
卸载:UnhookWindowsHookEx(HHOOK hhk)

WH_CALLWNDPROC 调用SendMessage
WH_CALLWNDPROCRET SendMessage的调用返回
WH_GETMESSAGE 调用GetMessage 或 PeekMessage
WH_KEYBOARD 调用GetMessage 或 PeekMessage 来从消息队列中查询WM_KEYUP 或 WM_KEYDOWN 消息
WH_MOUSE 当调用GetMessage 或 PeekMessage 来从消息队列中查询鼠标事件消息时
WH_HARDWARE 当调用GetMessage 或 PeekMessage 来从消息队列种查询非鼠标、键盘消息时
WH_MSGFILTER 当对话框、菜单或滚动条要处理一个消息时。该钩子是局部的。它时为那些有自己的消息处理过程的控件对象设计的。
WH_SYSMSGFILTER 和WH_MSGFILTER一样,只不过是系统范围的
WH_JOURNALRECORD 当WINDOWS从硬件队列中获得消息时
WH_JOURNALPLAYBACK 当一个事件从系统的硬件输入队列中被请求时
WH_SHELL 当关于WINDOWS外壳事件发生时,譬如任务条需要重画它的按钮.
WH_CBT 当基于计算机的训练(CBT)事件发生时
WH_FOREGROUNDIDLE 由WINDOWS自己使用,一般的应用程序很少使用
WH_DEBUG 用来给钩子函数除错
...全文
160 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhzxlqt 2005-05-05
  • 打赏
  • 举报
回复
不知道各位有没有Video Filter Driver的资料
surstar 2005-05-04
  • 打赏
  • 举报
回复
谢谢楼主分享,有和我一样的品格(开玩笑的)
Akitce 2005-05-04
  • 打赏
  • 举报
回复
学习..

2,643

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧