利用底层键盘钩子拦载任意按键(回调版)

利用底层键盘钩子拦载任意按键(回调版)

ID:6569456

大小:48.00 KB

页数:13页

时间:2018-01-18

利用底层键盘钩子拦载任意按键(回调版)_第1页
利用底层键盘钩子拦载任意按键(回调版)_第2页
利用底层键盘钩子拦载任意按键(回调版)_第3页
利用底层键盘钩子拦载任意按键(回调版)_第4页
利用底层键盘钩子拦载任意按键(回调版)_第5页
资源描述:

《利用底层键盘钩子拦载任意按键(回调版)》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、利用底层键盘钩子拦载任意按键(回调版).txt明骚易躲,暗贱难防。佛祖曰:你俩就是大傻B!当白天又一次把黑夜按翻在床上的时候,太阳就出生了利用底层键盘钩子拦载任意按键(回调版)--------------------------------------------------------------------------------发表日期:2007年1月12日出处:goodname008的Blog作者:卢培培((goodname008)【编辑录入:webmaster】前段时间我曾经写过一篇《利用底层键盘钩子屏蔽任意按键》,并放到了我的blog上。这

2、篇文章的题目中把“屏蔽”改成了“拦截”,显然要比以前的版本强一些了。对于以前写的那个DLL,有一个不够理想的地方,就是仅仅能实现屏蔽。如果想在屏蔽之前加入一些“小动作”,就只能修改DLL,在LowLevelKeyboardProc函数中添加代码,实现新的功能。但这样显然不够灵活,这样的DLL也不具备一般性了。所以我自然而然地想到了回调,Windows中有很多需要回调函数的API,我们当然也可以写出这样的API,这样做的好处就是可以给DLL调用程序留下足够的接口。此时,DLL就像一个阀门,我们不关心的按键消息就把它放过去,只把我们关心的按键消息拦截下来,

3、然后进一步处理,而这些处理的代码就写在DLL调用程序的回调函数中,这样做是最理想不过的了。相对于前一个版本,修改后的DLL源代码如下:/********************************************************************//*文件名:MaskKey.cpp*//**//*功能:标准DLL----利用底层键盘钩子实现拦截键盘任意按键*//**//*作者:卢培培(goodname008)时间:2005.1.18*//**//*BLOG:http://blog.csdn.net/goodname008*//

4、********************************************************************///导出函数列表//StartMaskKey//StopMaskKey#define_WIN32_WINNT0x0500//设置系统版本,确保可以使用底层键盘钩子#include"windows.h"//回调函数指针typedefBOOL(CALLBACK*LPFNKEYBOARDPROC)(WPARAM,KBDLLHOOKSTRUCT*);//全局变量LPDWORDg_lpdwVirtualKey=NULL;//K

5、eycode数组的指针intg_nLength=0;//Keycode数组的大小BOOLg_bDisableKeyboard=FALSE;//是否屏蔽整个键盘HINSTANCEg_hInstance=NULL;//模块实例句柄HHOOKg_hHook=NULL;//钩子句柄LPFNKEYBOARDPROCg_lpfnKeyboardProc;//键盘钩子回调函数指针//DLL入口函数BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){//保存模块实例句柄

6、g_hInstance=(HINSTANCE)hModule;//在进程结束或线程结束时卸载钩子switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:break;caseDLL_THREAD_ATTACH:break;caseDLL_PROCESS_DETACH:caseDLL_THREAD_DETACH:free(g_lpdwVirtualKey);if(g_hHook!=NULL)UnhookWindowsHookEx(g_hHook);break;}returnTRUE;}//底层键盘钩子函数LRES

7、ULTCALLBACKLowLevelKeyboardProc(intnCode,WPARAMwParam,LPARAMlParam){//拦截键盘的某些按键,如果g_bDisableKeyboard为TRUE则拦截整个键盘按键if(nCode>=HC_ACTION){KBDLLHOOKSTRUCT*pStruct=(KBDLLHOOKSTRUCT*)lParam;if(g_bDisableKeyboard)if(g_lpfnKeyboardProc(wParam,pStruct))returnCallNextHookEx(g_hHook,nCode,

8、wParam,lParam);elsereturntrue;LPDWORDtmpVirtual

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。