全局消息钩子代码 火苗999℃的博客代码_当前动态
全局消息钩子代码 | 火苗999℃的博客
代码
#ifndef __UdiskHook_h__#define __UdiskHook_h__#ifdef __cplusplusextern "C" {#endif#define DLL_EXPORT // #ifdef DLL_EXPORT#define DLLAPI __declspec(dllexport)#else#define DLLAPI __declspec(dllimport)#endif LRESULT DLLAPI CALLBACK HookProcAll(int nCode, WPARAM wParam, LPARAM lParam); LRESULT DLLAPI CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); BOOL DLLAPI SetHookProc(); BOOL DLLAPI UnHookProc();#ifdef __cplusplus}#endif#endif // __UdiskHook_h__
(资料图片仅供参考)
#include "UdiskHook.h"#include#includeHHOOK hHook;int g_time = 0;HMODULE GetSelfModuleHandle(){ MEMORY_BASIC_INFORMATION mbi; return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);}LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam){ if (0 == g_time) { g_time = 1; hHook = SetWindowsHookEx(WH_KEYBOARD, HookProcAll, GetSelfModuleHandle(), 0); } if (wParam == " " && 0 != g_time)// 空格卸载 { g_time = 0; UnhookWindowsHookEx(hHook); } return CallNextHookEx(NULL, nCode, wParam, lParam); //传递钩子信息 }LRESULT CALLBACK HookProcAll(int nCode, WPARAM wParam, LPARAM lParam){ // 记录按键 if ("a" <= wparam="">= wParam || "A" <= wparam="">= wParam || "0" <= wparam="">= wParam) { std::ofstream outFile; outFile.open("e:\\ttt.txt", std::ios::app); char ch = wParam; outFile << ch; outFile.close(); } return CallNextHookEx(NULL, nCode, wParam, lParam);}int Time1 = 0;HHOOK hHook1 = NULL;BOOL SetHookProc(){ if (0 == g_time) { Time1 = 1; hHook1 = SetWindowsHookEx(WH_KEYBOARD, HookProcAll, GetSelfModuleHandle(), 0); return TRUE; } return FALSE;}BOOL UnHookProc(){ if (1 == Time1) { UnhookWindowsHookEx(hHook1); return TRUE; } return FALSE;}
程序中加载钩子的代码
typedef HHOOK (_stdcall* Hook)(int ,WPARAM ,LPARAM ); HINSTANCE hDll = LoadLibrary("UdiskHook.dll");//加载动态链接库文件; if (hDll != NULL) { Hook HookProc=(Hook)GetProcAddress(hDll ,"_HookProc@12"); if (HookProc != NULL) { hHook = SetWindowsHookEx(WH_KEYBOARD , (HOOKPROC)HookProc , hDll , GetCurrentThreadId() // 为0时是全局钩子 ); } FreeLibrary(hDll);//卸载dll文件; }
HHOOK SetWindowsHookEx(int idHook, HOOKPROC lpfn, HINSTANCE hMod, DWORD dwThreadId);
idHook:指示欲被安装的挂钩处理过程之类型,此参数可以是以下值之一:
WH_CALLWNDPROC(4): 安装一个挂钩处理过程,在系统将消息发送至目标窗口处理过程之前,对该消息进行监视,详情参见CallWndProc挂钩处理过程. WH_CALLWNDPROCRET(12) :安装一个挂钩处理过程,它对已被目标窗口处理过程处理过了的消息进行监视,详情参见 CallWndRetProc 挂钩处理过程. WH_CBT(5) :安装一个挂钩处理过程,接受对CBT应用程序有用的消息 ,详情参见 CBTProc 挂钩处理过程. WH_DEBUG(9):安装一个挂钩处理过程以便对其他挂钩处理过程进行调试, 详情参见DebugProc挂钩处理过程. WH_FOREGROUNDIDLE(11):安装一个挂钩处理过程,该挂钩处理过程当应用程序的前台线程即将进入空闲状态时被调用,它有助于在空闲时间内执行低优先级的任务. WH_GETMESSAGE(3):安装一个挂钩处理过程对寄送至消息队列的消息进行监视,详情参见 GetMsgProc 挂钩处理过程. WH_JOURNALPLAYBACK(1):安装一个挂钩处理过程,对此前由WH_JOURNALRECORD 挂钩处理过程纪录的消息进行寄送.详情参见 JournalPlaybackProc挂钩处理过程. WH_JOURNALRECORD(0):安装一个挂钩处理过程,对寄送至系统消息队列的输入消息进行纪录.详情参见JournalRecordProc挂钩处理过程. WH_KEYBOARD(2):安装一个挂钩处理过程对击键消息进行监视. 详情参见KeyboardProc挂钩处理过程. WH_KEYBOARD_LL(13):此挂钩只能在Windows NT中被安装,用来对底层的键盘输入事件进行监视.详情参见LowLevelKeyboardProc挂钩处理过程. WH_MOUSE(7):安装一个挂钩处理过程,对鼠标消息进行监视. 详情参见 MouseProc挂钩处理过程. WH_MOUSE_LL(14):此挂钩只能在Windows NT中被安装,用来对底层的鼠标输入事件进行监视.详情参见LowLevelMouseProc挂钩处理过程. WH_MSGFILTER(-1):安装一个挂钩处理过程, 以监视由对话框、消息框、菜单条、或滚动条中的输入事件引发的消息.详情参见MessageProc挂钩处理过程. WH_SHELL(10):安装一个挂钩处理过程以接受对外壳应用程序有用的通知, 详情参见 ShellProc挂钩处理过程. WH_SYSMSGFILTER(6):安装一个挂钩处理过程,以监视由对话框、消息框、菜单条、或滚动条中的输入事件引发的消息.这个挂钩处理过程对系统中所有应用程序的这类消息都进行监视.详情参见 SysMsgProc挂钩处理过程.
lpfn:指向相应的挂钩处理过程.若参数dwThreadId为0或者指示了一个其他进程创建的线程之标识符,则参数lpfn必须指向一个动态链接中的挂钩处理过程.否则,参数lpfn可以指向一个与当前进程相关的代码中定义的挂钩处理过程.
hMod:指示了一个动态链接的句柄,该动态连接库包含了参数lpfn 所指向的挂钩处理过程.若参数dwThreadId指示的线程由当前进程创建,并且相应的挂钩处理过程定义于当前进程相关的代码中,则参数hMod必须被设置为NULL(0).
dwThreadId:指示了一个线程标识符,挂钩处理过程与线程相关.若此参数值为0,则该挂钩处理过程与所有现存的线程相关.
返回值:若此函数执行成功,则返回值就是该挂钩处理过程的句柄;若此函数执行失败,则返回值为NULL(0).若想获得更多错误信息,请调用GetLasError函数.
备注:若参数hMod为NULL,而参数dwThreadld为0或者指示了一个其他进程创建的线程标识符,则会产生错误.
对函数CallNextHookEx进行调用以下链接下一个挂钩处理过程是可选的,但也是被推荐的否则,其他安装了此挂钩的应用程序将无法获得此挂钩通知,从而可能导致错误的行为.除非您确实希望防止其他应用程序看到此挂钩通知,您应当调用函数CallNextHookEx. 在终止一个应用程序之前,必须调用函数UnhookWindowsHookEx以释放与此挂钩相关的系统资源. 挂钩的作用域依赖与挂钩的类型.一些挂钩只能被设置成系统作用域,其他挂钩(如下所示)还可以被设置为某一特定线程的作用域: WH_CALLWNDPROC 线程或系统 WH_CALLWNDPROCRET 线程或系统 WH_CBT 线程或系统 WH_DEBUG 线程或系统 WH_FOREGROUNDIDLE 线程或系统 WH_GETMESSAGE 线程或系统 WH_JOURNALPLAYBACK 系统 WH_JOURNALRECORD 系统 WH_KEYBOARD 线程或系统 WH_KEYBOARD_LL 线程或系统 WH_MOUSE 线程或系统 WH_MOUSE_LL 线程或系统 WH_MSGFILTER 线程或系统 WH_SHELL 线程或系统 WH_SYSMSGFILTER 系统 对于一个特定的挂钩类型,现成的挂钩先被调用,然后才是系统挂钩被调用. 系统挂钩作为共享资源,安装一次就对所用应用程序产生影响.所有的系统挂钩函数必须在库中.系统挂钩应当被限制用于一些特殊用途的应用程序或者用来作为应用程序调试的辅助工具.不再需要挂钩的库应当将相应的挂钩处理过程删除掉.
标签:
相关推荐:
最新新闻:
- 世界简讯:中国工商银行:U盾签名失败的解决方法
- 深信服捕获勒索病毒Megacortex新型变种 免费查杀 当前热门
- 迅雷怎么离线下载?迅雷离线下载与高速通道运作原理详解_热议
- 全局消息钩子代码 火苗999℃的博客代码_当前动态
- 环球快报:基于Tcl的自动化脚本语言——HammerOra
- 杀毒软件有哪些推荐?2013八大免费杀毒软件排行榜
- 国际最先进的全数字视频无压缩传输技术——2路数字光端机系列
- 如何使用LaTex编写数学公式?LaTeX使用技巧 天天即时看
- 科密碎纸机怎么样?科密碎纸机的价格及特点_全球热闻
- 环球新动态:山寨机怎么刷机?山寨机刷机注意事项
- 天天新动态:高频逆变电源是什么?高频逆变电源的应用领域及注意事项
- 软件安装和系统维护的原则是什么?电脑维护操作及遵循原则介绍
- 快看:如何利用主板进行超频?主板超频全解析
- 惠普免费在线数码相片冲洗馆 惠普喀嚓鱼的优点介绍
- PSP3000的635/639PRO-B7下载及安装教程_全球即时
- 天天快资讯丨地采暖怎么样?地采暖优缺点介绍
- MOTO XT615的手机系统是什么?摩托罗拉新UI界面设计_环球时快讯
- 快消息!vista系统怎么重装?vista系统重装下载安装教程
- 载乐网络科技创始人王自如——ZEMobileER-当前消息
- 小时代3刺金时代好看吗?电影《小时代3.0刺金时代》剧情介绍
- 酷派W706怎么样?有哪些优势? 世界即时
- 即时看!跨站脚本攻击是一种代码注入攻击
- 剑灵配置要求是什么?《剑灵》1024x768游戏介绍|天天资讯
- 快消息!onekeyghost安装器一键还原重装电脑系统
- 当前视点!狄拉克:量子场论的研究方法
- 自学编程看什么书?10本入门编程书籍推荐_天天微动态
- 美的电饭锅怎么样?美的电饭锅价格及特点介绍|前沿资讯
- 宏碁商务电脑有哪些特点?宏基台式机介绍
- 粒子群算法原理 基于numpy6.2的粒子群算法详解 当前资讯
- 电脑杂谈:oppor9s手机参数大全
- 蒙特利尔的麦吉尔大学:计算几何课程资料
- 【全球快播报】面试后说hold什么意思?外国人说“You have my word”什么意思?
- 当前资讯!液晶显示背光板生产厂家有哪些?背光板生产厂家详情介绍
- 《黑豹2》明日上映 漫威:接收全方位炸裂视效冲击!
- java面试专题:RPC源码深度剖析
- 经典摔角综合格斗游戏 《周末勇士》登陆steam:全球微速讯
- 什么是驱动程序?驱动程序和光驱有什么区别?
- 电脑怎么贴膜?电脑贴膜防辐射吗?
- 百度输入法如何自定义个性短语?百度输入法个性短语设置
- 10套极好用的PS绘画笔刷工具 简直就是神器
- EastFax传真原理是什么?EastFax传真原理介绍
- 苹果新系统OS10.3正式版评测:自动转化到新文件格式_环球今头条
- 优秀的企业绩效考核系统——MVC设计模式
- sqoop导入pg11常见问题及解决方法 热点在线
- java代码实现二分法查找 二分法的实现:每日消息
- 为什么要拆机?联想U310拆机教程:环球头条
- 天天视点!如何登录新浪微博html5?新浪微博怎么登陆?
- 金士顿u盘哪家好?士顿u盘厂家推荐:热点评
- 天天热门:视频编码中画面质量控制中最重要的部分——DataRate
- 最资讯丨NSM开发总结 NSM项目的技术培训
- iPhone 14 Pro全系降价700元:苹果坐不住了
- 要闻:腾讯成立职业技能培训学校公司 注册资本100万元
- 2023年中国汽油行业市场供需现状分析 汽油出口金额创历史峰值【组图】_天天快资讯
- 焦点资讯:男子礁石上钓鱼被海浪拍进石缝 垂钓别选偏僻海域
- 环球头条:2万元的iPhone上热搜 网友:不是它疯了就是我疯了
- 环球通讯!世嘉发布神秘手游新作先行预告 2月10日正式公布
- 生活逃不过科技与狠活:世界视点
- 特斯拉又出事故 高速撞车 每日焦点
- 每日热门:微软Bing已经引入ChatGPT 搜索市场要变天?
- 比尔盖茨约马斯克做慈善家:咱们把钱全捐了-环球观天下
- iPhone 14到手4899元 史低价快来捡漏 报道
- 《阿凡达:水之道》导演卡梅隆diss流媒体:观众需要回到影院去!
- 葛优起诉哔哩哔哩网络侵权:答辩期及举证期满后第3日开庭审理。-世界时讯
- 全球微头条丨生存恐怖游戏《原始预兆》新预告 红发美女打恐龙
- RTX4070 Ti比A卡低了60W功耗 4年能省2300多元
- 环球快看:日本政府否认雨宫正佳将接棒央行传闻,日元反弹
- 四川地下皇帝:400亿黑财帝国覆灭记
- 每日热讯!为什么三体不稳定,我们的太阳系如此稳定?
- 主播说联播丨满目春光,满怀希望,奔向美好!
- 路痴党福音!《星战绝地:幸存者》有快速旅行
- 天天观速讯丨男子油锅炸元宵现场惨烈 网友:需要穿防护服操作
- 全球头条:《卧龙:苍天陨落》新演示 大战魔化武将颜良文丑
- 《死亡空间:重制版》暂未打算支持Mod或加入新难度模式-热点
- 谁能拯救量子力学?:最新快讯
- 路畅科技(002813.SZ)拟增发收购中联高机100%股权开拓高空作业平台业务:环球新资讯