HOOK过程学习摘记
来源:互联网 发布:匿名举报网络诈骗 编辑:程序博客网 时间:2024/06/01 08:30
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
1.SetWindowsHookEx()把一个应用程序定义的钩子子程安装到钩子链表中。
返回值:若此函数执行成功,则返回值就是该挂钩处理过程的句柄;若此函数执行失败,则返回值为NULL(0).若想获得更多错误信息,请调用GetLastError函数.
2.钩子子程是一个应用程序定义的回调函数(CALLBACK Function),不能定义成某个类的成员函数,只能定义为普通的C函数。用以监视系统或某一特定类型的事件,这些事件可以是与某一特定线程关联的,也可以是系统中所有线程的事件。
3.在钩子子程中调用得到控制权的钩子函数在完成对消息的处理后,如果想要该消息继续传递,那么它必须调用另外一个 SDK中的API函数CallNextHookEx来传递它,以执行钩子链表所指的下一个钩子子程。这个函数成功时返回钩子链中下一个钩子过程的返回值, 返回值的类型依赖于钩子的类型。这个函数的原型如下:
HMODULEGetModuleHandle(
LPCTSTRlpModuleName);lpModuleName 模块名称
#pragma data_seg("shareddata")
HWNDsharedwnd=NULL;
//共享数据
#pragma data_seg()
#pragma comment
#pragma comment(...)
2>,共享数据必须初始化,否则微软编译器会把没有初始 化的数据放到.BSS段中,从而导致多个进程之间的共享行为失败。
- HOOK过程学习摘记
- 学习摘记
- C++ Prime学习过程中的细节摘记(一)
- C++ Prime学习过程中的细节摘记(二)
- C++ Prime学习过程中的细节摘记(三)
- perl学习摘记4
- 学习hash_map摘记
- Tuxedo学习摘记
- STL list学习摘记
- JavaScript学习摘记
- 批处理学习摘记
- openni学习摘记
- matlab学习摘记
- lib文件学习摘记
- 算法分析学习摘记
- CSS学习摘记
- 学习英语诀窍摘记
- PHPExcel 学习摘记
- 揭秘低调的Oculus Touch,以及它背后的技术大牛
- A problem is easy(南阳oj216)(数学变型)
- 验证正则表达式
- Unable to add window -- token android.os.BinderProxy@xxx is not valid; is your activity running
- VS2010链接错误:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- HOOK过程学习摘记
- SharedPreferences的基本使用方法
- Java设计模式_结构型_享元模式_实现单元的共享
- Appium-bootstrap的调试方法
- Big Omicron and Big Omega and Big Theta
- 如何给VSFTP增加用户,只能访问指定目录
- 怎样修复MindMapper里面中断的超链接
- 安卓开发常用的工具类
- [C++]《Windows核心编程》读书笔记