首页 伟德体育app下载官网 编程 必备知识 搜索引擎
站内搜索
  • 最近浏览
  • [J2EE]J2EE 应用伟德体育app下载官网技术
  • MySql替换伟德始于英国1946内容
  • IIS 7 下限制站点带宽和...
  • [伟德始于英国1946]sql serve...
  • linkd.exe目录映射工...
  • thinkphp提示PHP ...
  • [web站点]在IIS上开设...
  • [网络伟德体育app下载官网]如何保证伟德体育app下载官网...
  • dedecms网站写权限
  • MYSQL启用日志,查看日志...
  • thinkphp的设置方法
  • [伟德始于英国1946]查看sql ser...
  • VC++ 重启服务,停止服务...
  • 微软IE 7浏览器曝出第二个...
  • 微软承认系统严重漏洞 Win...
  • 推荐文章
  • [网络伟德体育app下载官网]如何保证伟德体育app下载官网...
  • [伟德始于英国1946]查看sql ser...
  • MySql替换伟德始于英国1946内容
  • thinkphp的设置方法
  • 命令行下的ip安全策略
  • 热文排行
  • API之SetWindows...
  • StartServiceCtrlDispatcher
  • [网络伟德体育app下载官网]如何保证伟德体育app下载官网...
  • 搭建eclipse+Jbos...
  • VC++ 重启服务,停止服务...
  • 远程桌面连接日志脚本bat&vbs
  • VB API 重启服务,停止...
  • 端口复用技术与实现代码(C++)
  • 获取计算机信息有关的API
  • WTS系列函数的使用
  • [web站点]在IIS上开设...
  • 将STL改成链表式
  • vc编译exe的体积最小优化
  • VB ListView的使用
  • [伟德始于英国1946]查看sql ser...
  • API之SetWindowsHookEx安装钩子(HOOK)函数介绍


    SetWindowsHookEx函数原型:
    HHOOK SetWindowsHookEx(
      int idHook,                    // hook type (钩子类型,处理的消息类型)
      HOOKPROC lpfn,         // hook procedure(钩子子程的地址指针)
      HINSTANCE hMod,      // handle to application instance(应用程序实例的句柄)
      DWORD dwThreadId   // thread identifier(与安装的钩子子程相关联的线程的标识符
    )
    );
    SetWindowsHookEx函数的作用:
    安装钩子,具体的说就是把一个应用程序定义的钩子子程安装到钩子链表中。
    SetWindowsHookEx函数返回值:
    函数执行成功返回钩子子程的句柄,失败返回NULL。
    SetWindowsHookEx函数参数介绍
    参数1:idHook hook类型。类型为int,整数型。
    说明
    WH_CALLWNDPROC 用于监视SendMessage发送的消息。系统在向窗体过程发送消息前调用。
    WH_CALLWNDPROCRET 用于监视SendMessage发送的消息。系统在窗体过程处理完此消息后调用。另外钩子会向其Hook过程传送一个CwpretStruct结构的地址。此结构包含了窗体过程处理系统消息后的一些消息。
    WH_CBT 可在系统激活、创建、消毁、最小化、最大化、移动、改变窗体前调用;在完成一条系统命令前调用;在从系统消息队列中移去鼠标或键盘事件前调用;在设置输入焦点前,或同步系统消息队列前调用。可以在Hook 过程拦截该类Hook,并返回一个值,告诉系统,是否继续执行上面的操作。
    WH_DEBUG 系统在调用与某种钩子类型联系的钩子过程前,将调用WH_DEBUG ,应用程序可以使用该钩子决定是否让系统执行某种类型的钩子
    WH_FOREGROUNDIDLE 系统在空闲时调用该Hook,在后台执行优先权较低的应用程序。
    WH_GETMESSAGE 安装一个监控信息并发送给一个消息队列的钩子
    WH_JOURNALPLAYBACK 安装一个可以向系统消息队列中插入消息的钩子。该钩子可以回放以前由 WH_JOURNALRECORD Hook录制的鼠标、键盘输入事件。在WH_JOURNALPLAYBACK Hook安装到系统时,鼠标、键盘输入事件将被屏蔽。该Hook同样是一个全局Hook,不能在指定线程中使用。
    WH_JOURNALRECORD 使应用程序可以监视输入事件。典型地,应用程序使用该Hook记录鼠标、键盘输入事件以供以后回放。该Hook是全局Hook,并且不能在指定线程中使用。Hook返回一个时间暂停值,它告诉系统,在处理当前回放的消息时,系统等待百分之几秒。这使得此Hook可以控制在回放时的时间事件。
    WH_KEYBOARD 安装一个监控键盘输入事件的钩子。应用程序使用该Hook监视发送到消息队列中的键盘输入。
    WH_KEYBOARD_LL Windows NT / 2000 / XP下安装一个监控低层键盘输入事件的钩子
    WH_MOUSE 安装一个监控鼠标消息钩子
    WH_MOUSE_LL Windows NT / 2000 / XP下安装一个监控低级鼠标输入事件的钩子
    WH_MSGFILTER 安装一个监视菜单、滚动条、消息框、对话框,当用户使用ALT+TAB或ALT+ESC来切换窗体时,该HOOK也可以拦截到消息。WH_MSGFILTER仅在应用程序内部监视菜单、滚动条、消息框、对话框等。
    WH_SHELL 一个SHELL程序可以使用WH_SHELL Hook来接收重要的信息。当一个SHELL程序被激活前或当前窗体被创建、消毁时,系统会调用WH_SHELL Hook过程。
    WH_SYSMSGFILTER 监视菜单、滚动条、消息框、对话框,当用户使用ALT+TAB或ALT+ESC来切换窗体时,该HOOK也可以拦截到消息。WH_SYSMSGFILTER可以在系统内监视所有应用程序的这些事件。
    参数2:lpfn 钩子子程的地址指针类型为HOOKPROC,整数型。
    如果dwThreadId参数为0,如果是一个由别的进程创建的线程的标识, lpfn必须指向DLL中的钩子子程。 除此以外,lpfn可以指向当前进程的一段钩子子程代码。钩子函数的入口地址,当钩子钩到任何消息后便调用这个函数。
    参数3:hMod 应用程序实例的句柄。类型为HINSTANCE,整数型。
    标识包含lpfn所指的子程的DLL。如果dwThreadId 标识当前进程创建的一个线程,而且子程代码位于当前进程,hMod必须为NULL。 可以很简单的设定其为本应用程序的实例句柄。
    参数4:dwThreadId 与安装的钩子子程相关联的线程的标识符。类型为DWORD,整数型。
    如果为0,钩子子程与所有的线程关联,即为全局钩子
    VB中的声明:
    Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, _
    ByVal lpfn As Long, _
    ByVal hmod As Long, _
    ByVal dwThreadId As Long) As Long


    Hook类型常数:
    Public Const WH_CALLWNDPROC = 4
    Public Const WH_CALLWNDPROCRET = 12
    Public Const WH_CBT = 5
    Public Const WH_DEBUG = 9
    Public Const WH_FOREGROUNDIDLE = 11
    Public Const WH_GETMESSAGE = 3
    Public Const WH_HARDWARE = 8
    Public Const WH_JOURNALPLAYBACK = 1
    Public Const WH_JOURNALRECORD = 0
    Public Const WH_KEYBOARD = 2
    Public Const WH_KEYBOARD_LL = 13
    Public Const WH_MOUSE = 7
    Public Const WH_MOUSE_LL = 14
    Public Const WH_MSGFILTER = (-1)
    Public Const WH_SHELL = 10
    Public Const WH_SYSMSGFILTER = 6

    [wangjy17908]
    添加时间:2011-01-11
    版权所有(C)2005-2015