站内搜索
最近浏览
- WinCE Security...
- xdebug配置说明
- VC++ 获取文件的创建、修...
- ASP进度条
- 简单代理服务器C代码实现(S...
- 程序设计竞赛试题选(02)
- 如何在ASP程序中打印Acc...
- UTF-8和16进制区间
- ASP实用技巧:强制刷新和判...
- 运行中程序删除自己的方法
- asp提高首页性能的一个技巧
- [J2EE]J2EE 应用服务器技术
- VB变量命名规范
- C语言常见错误小结
- (摘自网络)如何在IIS中调...
推荐文章
热文排行
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,整数型。
参数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
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可以在系统内监视所有应用程序的这些事件。 |
如果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-12