现在的位置: 首页 > web前端 > 正文

windows钩子实现参数

2020年07月20日 web前端 ⁄ 共 1250字 ⁄ 字号 评论关闭

  钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。


  windows钩子是什么


  当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。HookAPI是指Windows开放给程序员的编程接口,使得在用户级别下可以对操作系统进行控制,也就是一般的应用程序都需要调用API来完成某些功能,HookAPI的意思就是在这些应用程序调用真正的系统API前可以先被截获,从而进行一些处理再调用真正的API来完成功能。


  其实Windows系统是建立在事件驱动的机制上的,说穿了就是整个系统都是通过消息的传递来实现的。而钩子是Windows系统中非常重要的系统接口,用它可以截获并处理送给其他应用程序的消息,来完成普通应用程序难以实现的功能。


  可见,利用钩子可以实现许多特殊而有用的功能。因此,对于高级编程人员来说,掌握钩子的编程方法是很有必要的。


  钩子的种类很多,每种钩子可以截获并处理相应的消息,如键盘钩子可以截获键盘消息,外壳钩子可以截取、启动和关闭应用程序的消息等。


  在实例程序中运用WH_GETMESSAGE钩子,这个钩子监视投递到消息队列中的Windows消息。


  钩子可以分为线程钩子和系统钩子,线程钩子监视指定线程的事件消息,系统钩子监视系统中的所有线程的事件消息。因为系统钩子会影响系统中所有的应用程序,所以钩子函数必须放在独立的动态链接库(DLL)中。


  实现windows钩子机制的几个关键技术


  windows的钩子程序,需要用到几个sdk中的api函数。下面列出这几个函数的原型及说明:


  hhooksetwindowshookex(intidhook,hook_proclpfn,hinstancehmod,dworddwthreadid);


  参数说明如下:


  idhook:钩子的类型


  lpfn:钩子处理函数地址


  hmod:包含钩子函数的模块句柄


  dwthreadid:钩子的监控线程


  函数说明:函数将在系统中挂上一个由idhook指定类型的钩子,监控并处理相应的特定消息。


  boolunhookwindowshookex(hhookhhk);


  函数说明:函数将撤销由hhk指定的钩子。


  lresultcallnexthookex(hhookhhk,intncode,wparamwparam,lparamlparam);


  函数说明:函数将消息向下传递,下一个钩子处理将截获这一消息。


  总之,windows钩子给大家简单的介绍了一些,希望大家多看看。


  

抱歉!评论已关闭.