- ·上一篇内容:使用C#开发批量ACCESS数据库压缩程序
- ·下一篇内容:C#编程实现动态生成Word文档
VB编程中钩子的实现及应用
三、实例--键盘消息的拦截
在程序开发时常用的有对输入消息进行监视的键盘钩子,对于所监视到的消息应进行处理,下面对键盘钩子参数的具体内容组成进行说明:
如果有键盘消息(WM_KEYUP或WM_KEYDOWN)将被处理时,则系统调用键盘钩子。
nCode为HC_ACTION或HC_NOREMOVE,若小于0,则要求处理函数向下传递该消息。
wParam表示按键键码常数,A键到Z键与其ASCII码的相应值'A'到'Z'是一致的,例如按C键,则wParam值为67。
lParam与WM_KEYDOWN同,占四个字节,其包括的内容较多,其二进制结构如下:
0 |
1 |
…… |
15 |
16 |
……… |
23 |
24 |
25 |
…… |
28 |
29 |
30 |
31 |
0-15位(Key repeat count),键码重复次数。16-23位(Scan code),按键的扫描码。24位(Extended_Key flag),扩展键(功能键、数字小键盘上的键)标志,为1则是扩展键,否则为0。25-28位被保留。29位(Context Code),状态描述码,ALT键被按下则为1,否则为0。30位(Previouskey_stateflag)指定先前的键状态,如果消息被发出之前键处于按下状态,则为1;键处于释放状态则为0。31位(Transiton_stateflag)状态转换标志,如果键是被按下值为1,如果键被放开值为0。
本例中的钩子用来监视并记录应用程序中的按键信息。在程序中,ALT+F4组合键被屏蔽。下面是部分代码:
Public hHook as Long |
四、总结
钩子处理程序是Windows高级编程技术,一般程序员都使用VC++等程序设计工具实现,本文表明,对于VB来说,虽然很多人认为是非专业的设计工具,但实现钩子这样的高级技术也是非常方便的。另外在使用钩子时应注意到,钩子虽然功能比较强,但如果使用不当将会严重影响系统的效率,所以要尽量避免使用系统钩子,并且在不用钩子时,应将钩子及时卸载。
本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!