windows钩子程序实现.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
windows钩子程序实现

课程设计报告 windows钩子程序实现 班级: 学号: 姓名: 教师评语: 教师签名: 2010年7月 课程设计题目 windows钩子程序实现 目的和背景 目的: 1)更深入的学习C++,并学会在Visual C++ 6.0上编写应用程序 2)了解windows钩子程序的基本原理,类型和实现过程 3)掌握用C++来设计一个钩子程序 背景:钩子的本质是一段用以处理系统消息的程序,通过系统调用,把他挂入系统。钩子的种类很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时钩子函数可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。鼠标钩子是能截获鼠标的操作,包括单击,双击,鼠标所在的位置等;而键盘钩子是截获从键盘输入的信息。 主要内容 1)熟悉钩子程序在Windows操作系统的作用 2)通过找资料,学习钩子程序的基本原理,包括Windows的消息传递机制,钩子的概念,钩子的类型,钩子的实现过程 3)学习和掌握钩子函数,Win32全局钩子的运行机制,VC6中MFC DLL的分类及特点和在VC6中全局共享数据的实现 4)用C++编写一个windows钩子程序;实现适时获取当前鼠标所在窗口的标题和监视各种键盘消息[1] 王育坚[2] 王西武阎梅 赵怀勋 在VC6下应用Windows系统钩子技术 现代电子技术? 2004:27(17)?. [3] 徐士良常用算法程序集:C++语言描述第4版清华大学出版社2009.7. [4] 钱能C++程序设计教程:设计思想与实现修订版清华大学出版社2009.7. [5] 游洪跃, 伍良富, 王景熙C++面向对象程序设计实验和课程设计教程清华大学出版社2009.2. [6] 倪步喜.Windows的钩子技术及实现[J].计算机与现代化.2007,28(1):28-30. 1目的和背景 钩子的本质是一段用以处理系统消息的程序,通过系统调用,把他挂入系统。钩子的种类很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时钩子函数可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。鼠标钩子是能截获鼠标的操作,包括单击,双击,鼠标所在的位置等;而键盘钩子是截获从键盘输入的信息。 通过这个课程设计,目的是更深入的学习C++,并学会在Visual C++ 6.0上编写应用程序,了解windows钩子程序的基本原理,类型和实现过程,掌握用C++来设计一个钩子程序。 2设计想思 钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。对每种类型的钩子由系统来维护一个钩子链,最近安装的钩子放在链的开始,而最先安装的钩子放在最后,也就是后加入的先获得控制权Win32的运行机制Win32 DLL来构造动态链接库。 3函数与数据结构 (1)函数SetWindowsHookEx要实现Win32的系统钩子,必须调用SDK中的API函数SetWindowsHookE来安装这个这个函数的原型是idHook:表示钩子类型,它是和钩子函数类型一一对应的比如,WH_KEYBOAR示安装的是键盘钩子,WH_MOUSE表示是鼠标钩子等。Lpfn:是钩子函数的地址HMod:是钩子函数所在的实例的句柄。对于线程钩子,该参数为NULL;对于系统钩子该参数为钩子函数所在的DLL句柄。dwThreadId :指定钩子所监视的线程的线程号。对于全局钩子,该参数为NULLSetWindowsHookEx:返回所安装的钩子句柄。值得注意的是线程钩子和系统钩子的钩子函数的位置有很大的差别。线程钩子一般在当线程或者当前线程派生的线程内,而系统钩子必须放在独立动态链接库中WINAPI DllMain 当一个进程或线程载入和 卸载DLL时,都要调用该函数,它的原型是BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason, LPVOID lpvReserved); 其中第一个参数hinstDLL表示DLL的实例句柄;第二个参数fdwReason它有四个可能的值:DLL_PROCESS_ATTACH(进程载入),DLL_THREAD_ATTACH(线程载入),DLL_THREAD_DETACH(线程卸载),DLL_PROCESS_DETACH (进程卸载),在DLLMain函数中可以对传递进来的这

文档评论(0)

2017meng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档