利用底层键盘钩子屏蔽任意按键

     很多人都知道,如果想在系统范围内屏蔽键盘上的任意按键需要使用全局键盘钩子,然而像win键这样“倔强”的按键又不是普通的键盘钩子就能搞定的。这里我提供一种利用底层键盘钩子屏蔽任意按键(包括win键)的方法,并且作成了.dll动态链接库,方便以后使用。钩子,是一种相对复杂一点的技术,通常用来监视系统中某一类型的事件,这些事件可以与某一线程相关(线程钩子),也可以是系统中的所有线程(全局钩子)。关于钩子的理论,我不想说太多,也无法说太多,因为那不是三言两语就能说清楚的。

     本文的重点在于底层键盘钩子的应用,前些天CSDNVB版有人问如何实现屏蔽win键,说实话,这东西用VB也是可以做到的,只不过全局钩子的钩子函数必须写在标准dll中,而VB只能通过变通的方法做出标准dll,稍微有点麻烦,所以我索性用VC写了一个dll,这样VCVBDelphi等等都可以调用,而且我也留出了足够的接口,稍后就会看到。

     有一点必须得声明一下,底层键盘钩子有一个半致命的缺点,就是只能在NT及其以上系统中使用,不过好在现在用2000XP2003的人绝对不在少数,将来用LongHorn的人估计也少不了,所以这点倒是不用太担心。  :)

     好了,闲话少说,源代码在此:

 

     DLL头文件(在VC中使用这个DLL中的函数时,需要包含这个头文件,就像使用API要包含windows.h一样):

 

/********************************************************************/

/* 文件名: MaskKey.h                                                */

/*                                                                  */

/* 功能: 标准 DLL 导出函数头文件, 在使用该DLL的程序中包含此文件     */

/*                                                                  */

/* 作者: 卢培培 (goodname008)             时间: 2004.8.21           */

/*                                                                  */

/* BLOG: http://blog.csdn.net/goodname008                           */

/********************************************************************/

 

DECLSPEC_IMPORT

BOOL

WINAPI

StartMaskKey(

     LPDWORD lpdwVirtualKey,

     int nLength,

     BOOL bDisableKeyboard = FALSE

     );

 

DECLSPEC_IMPORT

BOOL

WINAPI

StopMaskKey();

 

     DLL主文件:

 

/********************************************************************/

/* 文件名: MaskKey.cpp                                              */

/*                                                                  */

/* 功能: 标准 DLL ---- 利用底层键盘钩子实现屏蔽键盘任意按键         */

/*                                                                  */

/* 作者: 卢培培 (goodname008)             时间: 2004.8.21           */

/*

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值