zoukankan      html  css  js  c++  java
  • HOOK(钩子)函数

    安装、卸载钩子的相关函数

    钩子类型 按功能分:

    1、WH_CALLWNDPROC和WH_CALLWNDPROCRET:使你可以监视发送到窗口过程的消息
    3、WH_DEBUG    调试钩子
    4、WH_FOREGROUNDIDLE   当应用程序的前台线程大概要变成空闲状态时,系统就会调用WH_FOREGROUNDIDLE

    5、WH_JOURNALRECORD   监视和记录输入事件
    6、WH_JOURNALPLAYBACK   回放用WH_JOURNALRECORD记录事件
    7、WH_KEYBOARD    键盘钩子
    9、WH_KEYBOARD_LL   低层键盘钩子
    10、WH_MOUSE    鼠标钩子
    11、WH_MOUSE_LL    底层鼠标钩子
    12、WH_SHELL    外壳钩子
    13、WH_MSGFILTER 和WH_SYSMSGFILTER  使我们可以监视菜单,滚动条,消息框等

    钩子的作用范围 
    ++++++++++++++++  
      一共有两种范围(类型)的钩子:局部的和远程的。 
    一、局部钩子仅钩挂您自己进程的事件。 
    二、远程的钩子还可以将钩挂其它进程发生的事件。 
    远程的钩子又有两种: 
    1、基于线程的 它将捕获其它进程中某一特定线程的事件。简言之,就是可 
    以用来观察其它进程中的某一特定线程将发生的事件。 
    2、系统范围的 将捕捉系统中所有进程将发生的事件消息。 

    安装钩子:

    实现Win32的系统钩子,必须调用SDK中的API函数SetWindowsHookEx来安装这个钩子函数,这个函数的原型是  HHOOK SetWindowsHookEx( int idHook,HOOKPROC lpfn, INSTANCE hMod,DWORD dwThreadId )  第一个参数:idHook表示钩子类型,它是和钩子函数类型一一对应的。如,WH_KEYBOARD,WH_MOUSE。  第二个参数:Lpfn是钩子函数的地址。  第三个参数:HMod是钩子函数所在的实例的句柄。对于线程钩子,该参数为NULL;对于系统钩子,该参数为钩子函数所在的DLL句柄。 (系统钩子必须在DLL中)  第四个参数:dwThreadId 指定钩子所监视的线程的线程号。对于全局钩子,该参数为NULL。其中,全局钩子函数必须包含在DLL(动态链接库)中,而线程专用钩子还可以包含在可执行文件中。得到控制权的钩子函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个SDK中的API函数CallNextHookEx()来传递它。钩子函数也可以通过直接返回TRUE来丢弃该消息,并阻止该消息的传递。  执行SetWindowsHookEx(),会返回所安装的钩子句柄。

    卸载钩子

       调用函数 BOOL UnhookWindowsHookEx( HHOOK hhk)卸载钩子,其参数hhk就是执行SetWindowsHookEx()后返回的所安装的钩子的句柄。

    钩子[回调]函数

      钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,比如监听键盘的事件,系统会调用钩子函数进行处理。一般为下:   LRESULT WINAPI MyHookProc(int nCode,WPARAM wParam,LPARAM lParam)   参数wParam和 lParam包含所钩消息的信息,比如鼠标位置、状态,键盘按键值等。nCode包含有关消息本身的信息,比如是否从消息队列中移出。

     注:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

     

     

     

     

  • 相关阅读:
    机器学习--决策树
    插入排序、选择排序的实现与性能比较
    【笔记】如何实现属性可修改的函数装饰器
    【笔记】如何为被装饰的函数保存元数据
    【笔记】对文件的一些操作
    【笔记】对字符串的一些操作
    USB鼠标按键驱动
    LCD驱动 15-3
    LCD驱动 15 -2
    LCD驱动 15-1
  • 原文地址:https://www.cnblogs.com/fulse/p/6272462.html
Copyright © 2011-2022 走看看