最新最全SetWindowsHookEx和其回调函数的使用实例

上传人:氟**** 文档编号:184608389 上传时间:2021-06-23 格式:DOCX 页数:10 大小:53.52KB
返回 下载 相关 举报
最新最全SetWindowsHookEx和其回调函数的使用实例_第1页
第1页 / 共10页
最新最全SetWindowsHookEx和其回调函数的使用实例_第2页
第2页 / 共10页
最新最全SetWindowsHookEx和其回调函数的使用实例_第3页
第3页 / 共10页
最新最全SetWindowsHookEx和其回调函数的使用实例_第4页
第4页 / 共10页
最新最全SetWindowsHookEx和其回调函数的使用实例_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《最新最全SetWindowsHookEx和其回调函数的使用实例》由会员分享,可在线阅读,更多相关《最新最全SetWindowsHookEx和其回调函数的使用实例(10页珍藏版)》请在金锄头文库上搜索。

1、学习必备欢送下载在网上找呢很久都没有找到消息hook 得实例,下面为我得例子给各人分享一下下面为 dll 中得代码:/我得履历,编译得时间会提示DllMain ,已在 DllMain.cpp中界说,把DllMain.cpp从源文件里删掉就好呢#include stdafx.h #include HHOOK hkey=NULL;HINSTANCE h_dll;#pragma data_seg(.MySec)/ 界说字段,段名.MySec HWND h_wnd=NULL;#pragma data_seg()#pragma comment(linker,/section:.MySec,RWS)BOO

2、L WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)h_dll=hinstDLL;/MessageBox(0, 运行 dllman,MB_OK); return TRUE;LRESULT CALLBACK my_test(int nCode,WPARAM wParam,LPARAM iParam)/*if(nCode=HC_ACTION)第 8 页,共 10 页else*/MessageBox(0, 乐成. , 标题 ,MB_OK);MessageBox(0, 失败. , 标题 ,MB_OK);Messa

3、geBox(0, 被截取 ,MB_OK); UnhookWindowsHookEx(hkey); return 1;void SetHook(HWND hwnd)h_wnd = hwnd;/MessageBox(0, 运 行 sethook,MB_OK); hkey=SetWindowsHookEx(WH_KEYBOARD,my_test,h_dll,0);/下面为 EXE 得代码:有许多头文件为没用上得,我小我风俗都带着- -,固然这不为好风俗/ #include stdafx.h#include #include #include #include #include #include #i

4、nclude #include #include #include #include #include #include #include #include #pragma comment (lib,PSAPI.LIB) #pragma comment (lib,shlwapi.lib) #pragma comment (lib,Kernel32.lib) using namespace std;typedef void (cdecl * pfunc)(HWND); /界说函数指针范例void main()HINSTANCE hmod;pfunc sethook;hmod=LoadLibrar

5、y(c:dll_hook.dll);/动态加载dllif(hmod!=NULL)sethook=(pfunc)GetProcAddress(hmod,SetHook);/调用 dll 中得函数sethook(NULL);system(pause);/下面为我搜集得hook 相干得文档,大多去自百度起首说一句 , 可以调用 WIN32API得编程语言许多, 比方汇编 , Fortran, VB, C, Java,乃至脚本语言 matlab, ruby等, 不外原理都为一样得, 这里就以C / C+去为例吧SetWindowsHookEx一般都为写在你要利用Hook 得地方 , 在进一步表明之前先

6、大略阐明一下Hook 相干环境钩子有局部与长途两种范例, 与钩子相干得函数有:1. 创建钩子 :SetWindowsHookEx,其四个参数分别为钩子范例, 钩子函数地点, 钩子函数地点DLL 得实例句柄 , 安装钩子后想监控得线程得ID 号, 返回参数为钩子句柄2. UnhookWindowsHookEx,参数只有一个 ,为要卸载得钩子句柄3. 钩子函数 (名称恣意 ), 三个参数 , 详细意义与钩子范例有关这里以一个例子阐明一下:比方你想写一个步伐, 当鼠标移到那里时就在主步伐中表现鼠标地点窗口得名称(1) 假如鼠标只为范围在窗口内 , 那么以上 1, 2, 3 三个函数均写在运行得主步伐

7、中 , 比方函数 1 可以写在按下某个按钮得消息相应函数中 ,函数 2 写在松开按扭得消息相应函数中 , 函数 3 只要不写在别得函数中就行 , 由于它本生就为一个要界说得独立函数(2) 假如鼠标可以在屏幕恣意位置移动 , 那么以上函数 1, 2 位置同 (1), 但函数 3 要写在一个别的写得 DLL 里, 由于此时安装得为全局钩子 , 为呢到达获取窗口名称得目得 , 在 DLL 里大概仍要做一些其他事情 ,比方设置共享段 , 关于这些这里不细说呢关于钩子 ,以上只为简朴说呢一下, 不外, 利用钩子确实也很简朴, 由于重要得事情仍为在钩子函数里关于钩子得利用实在真得很简朴, 应该说WIN32

8、编程实在真得很简朴, 更进一步说 , 不消动头脑写算法只用纯熟语法得编程都很简朴 , 这里固然也包罗钩子得应用啦:)说到这里不由得颁发一点题外话, 编程多年 , 走过许多弯路 , 领会许多 , 关于编程 , 实在学问很大, 小到学语法 , 大到算法 , 应用 , 架构等等 , 作为一门盘算机科学, 与物理 , 数学等有干系得分枝仍有许多 , 仍有与电子相干得专业等, 内容繁芜因此 , 假如你真想学点工具, 不要范围在写一个有特别用途得桌面步伐,也不要整天沉醉在种种语言 ,语法中 , 最重要得为不要贪多! 明白本身学编程到底想做什么, 为写软件 , 开辟游戏 , 仍为搞网络 , 仍为做算法 ,

9、仍为办理理工,数学, 电子题目打好根底 ,明白目标 , 就好好研讨吧, 不要什么都学, 但什么都不精扯远呢 , 说不定你本生就已经很锋利呢, 我反倒显得有些班门弄斧呢, 不外都为真实领会, 不管对你有没有效 , 再一次Good luck! 编辑本段 语法HHOOKWINAPISetWindowsHookEx( inintidHook, inHOOKPROClpfn, inHINSTANCEhMod, inDWORDdwThreadId); 编辑本段 根本观点钩子 (Hook) ,为 Windows消息处置机制得一个平台,应用步伐可以在上面设置子程以监督指定窗口得某种消息,并且所监督得窗口可以为

10、其他历程所创立得;当消息到达后,在目标窗口处置函数之前处置它;钩子机制答应应用步伐截获处置window消息或特定变乱;钩子现实上为一个处置消息得步伐段,通过体系调用,把它挂入体系;每当特定得消息发出,在没有到达目得窗口前,钩子步伐就先捕捉该消息,亦即钩子函数先得到控制权;这时钩子函数即可以加工处置(改变)该消息,也可以不作处置而继承通报该消息,仍可以逼迫竣事消息得通报; 编辑本段 运行机制1 、钩子链表与钩子子程:每一个Hook都有一个与之相干联得指针列表,称之为钩子链表,由体系去维护;这个列表得指针指向指定得,应用程序界说得,被Hook子程调用得回调函数,也就为该钩子得各个处置子程;当与指定

11、得Hook范例关联得消息产生时,体系就把这个消息通报到Hook子程;一些 Hook子程可以只监督消息,大概修改消息,大概制止消息得进步,防备这些消息通报到下一个Hook子程大概目得窗口;近来安装得钩子放在链得开始,而最早安装得钩子放在末了,也就为后参加得先得到控制权;Windows并不要求钩子子程得卸载次序肯定得与安装次序相反;每当有一个钩子被卸载, Windows便开释其占用得内存,并更新整个Hook链表;假如步伐安装呢钩子, 但为在尚未卸载钩子之前就竣事呢,那么体系会主动为它做卸载钩子得操纵;钩子子程为一个应用步伐界说得回调函数(CALLBACKFunction),不能界说成某个类得成员函

12、数,只能界说为平凡得C 函数;用以监督体系或某一特定范例得变乱,这些变乱可以为与某一特定线程关联得,也可以为体系中全部线程得变乱; 编辑本段 钩子回调函数必须根据以下得语法LRESULTCALLBACKHookProc (intnCode, WPARAMwParam, LPARAMlParam);HookProc为回调函数名;nCode参数为Hook代码, Hook子程利用这个参数去确定使命;这个参数得值依靠于 Hook范例,每一种Hook都有本身得Hook代码特性字符集;wParam与 lParam参数得值依靠于Hook代码,但为它们得典范值为包罗呢关于发送大概吸收消息得信息;2 、钩子得安装与开释:利用API 函数 SetWindowsHookEx()把一个应用步伐界说得钩子子程安装到钩子链表中;SetWindowsHookEx函数总为在Hook链得开头安装Hook子程;当指定范例得Hook监督得变乱产生时,体系就调用与这个

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 高考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号