




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
使用默认键盘挂钩阻止键(回调版本)-是的-是的发行日期:2007年1月12日来源:goodname008的博客作者:Lu peipei(goodname 008)编辑者输入:webmaster不久前,我写了利用底层键盘钩子屏蔽任意按键篇并在我的博客上发表。在这篇文章的标题中,把“阻止”改为“阻止”,显然比以前的版本好一些。对以前使用的DLL实施屏蔽是不够的。要在屏蔽之前添加“小行为”,可以只修改DLL,向LowLevelKeyboardProc函数添加代码以实现新功能。但是好像缺乏灵活性。DLL不具有一般性。所以我自然而然地想到了回调。Windows上有许多需要回调函数的API,当然,您也可以编写这些API。这样做的好处是可以在DLL寻呼机上留下足够的接口。此时,DLL就像一个阀门,只保留不感兴趣的密钥信息,截取我们关心的密钥信息,进一步处理。这些处理代码被写入DLL调用程序的回调函数中,因此非常理想。与早期版本相关的已修改DLL源代码如下:/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */*文件名: maskey . CPP */* */*功能:标准DLL -使用默认键盘挂钩拦截键盘*/* */*作者: Lu peipei(goodname 008)时间: 2005.1.18 */* */* blog : http:/blog . csdn . net/good name 008 */* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */导出函数列表/startmaskey/stopmasskey#define _WIN32_WINNT0x0500 /设定系统版本以使用预设键盘挂接# include“windows . h”/回调函数指针type def bool(callback * lpfn keyboard proc)(WP aram,kbdllhelookstruct *);/全局变量LPDWORD g _ lpdwVirtualKey=NULL/Keycode阵列的指标int g _ nLength=0;/Keycode阵列的大小BOOL g _ bDisableKeyboard=FALSE/是否遮罩整个键盘HINSTANCE g _ hInstance=NULL/模块实例句柄HHOOK g _ hHook=NULL/弯钩句柄lpfn keyboard proc g _ lpfn keyboard proc;/键盘挂接回调函数指针/DLL条目函数bool apipentry dll man(handle hmodule,dwordul _ reason _ for _ call,lpvoid lpreserved)/存储模块实例句柄g _ hInstance=(hInstance)hm odule;/在进程结束或线程结束时卸载挂接交换机(ul_reason_for_call)Case DLL_PROCESS_ATTACH:BreakCase DLL_THREAD_ATTACH:BreakCase DLL_PROCESS_DETACH:Case DLL_THREAD_DETACH:free(g _ lpdwVirtualKey);If (g_hHook!=null)unhookwindowshookex(g _ hhook);BreakReturn TRUE/预设键盘挂接函数lresult callback low level keyboard proc(intncode、wparam wparam、lpram lpararam)/如果截断键盘上的某些键,则g_bDisableKeyboard为TRUE,这将截断整个键盘键If (nCode=HC_ACTION)kbdllhelkstruct * pstruct=(kbdllhelookstruct *)lpram;If (g_bDisableKeyboard)If (g _ lpfn keyboardproc (wparam,pstruct)Return callnexthop (g _ hhook,ncode,wparam,lpram);ElseReturn trueLP dword tmpvirtualkey=g _ lpdwvirtualkey;for(int I=0);I g _ nLengthI)If (pstruct-vk代码=* tmpvirtualkey)If (g _ lpfn keyboardproc (wparam,pstruct)Return callnexthop (g _ hhook,ncode,wparam,lpram);ElseReturn true/调用系统的以下挂接Return callnexthop (g _ hhook,ncode,wparam,lpram);/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */*键盘键终止点开始*/* */*参数: */*指向lpdwVirtualKey Keycode数组的指针*/* nLength Keycode阵列的大小*/* bDisableKeyboard是否截取整个键盘*/* */*返回值: TRUE成功,FALSE失败*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *bool winapi startmaskey(LP dword lpdwvirtualkey,int nlength,lpfn keyboard proc lpfn keyboard proc,bool bdisablekeyboard=false)/如果已安装键盘挂接,则返回FALSEIf (g_hHook!=NULL | | n length=0)return FALSE;/将用户发送的keycode数组存储在全局变量中g _ lpdwvirtualkey=(LP dword)malloc(sizeof(dword)* n length);LP dword tmpvirtualkey=g _ lpdwvirtualkey;for(int I=0);I nLengthI)* tmpVirtualKey=* lpdwVirtualKey;G _ nLength=nLengthg _ bdisable keyboard=bdisable keyboard;g _ lpfn keyboard proc=lpfn keyboard proc;/安装预设键盘挂接g _ hhook=setwindowsshookex(wh _ keyboard _ ll,low level keyboardproc,g _ hinstance,null);if(g _ hHook=NULL)return FALSE;Return TRUE/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */*停止拦截键盘键*/* */*参数:(无)*/* */*返回值: TRUE成功,FALSE失败*/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *BOOL WINAPI StopMaskKey()/卸载挂接if(unhookwindowshookex(g _ hhook)=0)return false;G _ hHook=NULLReturn TRUE当
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防汛知识培训班新闻稿课件
- 防汛相关知识培训课件
- 摄影服务公司员工保密协议
- 防汛业务知识培训
- 金融行业营销推广方案
- 购物体验行业技术标准与规范
- 微前端与跨平台应用的无缝集成研究-洞察及研究
- 防恐怖知识培训内容课件
- 楼房外墙物业维修基金维合同2篇
- 基因表达调控网络-第4篇-洞察及研究
- 脑梗死恢复期护理查房范文讲课件
- 三年级走美杯试题汇总
- 年处理12万吨煤焦油加工工艺初步设计
- 生产件批准程序PPAP学员版
- 2022年03月北京肿瘤医院公开招聘笔试参考题库含答案解析
- YB 4094-1993炮弹用方钢(坯)超声波探伤方法
- 《雨巷》优秀课件-雨巷课件一等奖
- 《嫦娥(李商隐)》课件
- 《人工染色体载体》课件
- 平行平板的多光束干涉
- 项目代建大纲
评论
0/150
提交评论