首 页IT知识库翔宇问吧收藏本站
当前位置:翔宇亭IT乐园IT知识库编程技术VB/VB.NET

VB编程中钩子的实现及应用

减小字体 增大字体 作者:不详  来源:转载  发布时间:2010-05-10 15:16:00

 

三、实例--键盘消息的拦截

  在程序开发时常用的有对输入消息进行监视的键盘钩子,对于所监视到的消息应进行处理,下面对键盘钩子参数的具体内容组成进行说明:


  如果有键盘消息(WM_KEYUPWM_KEYDOWN)将被处理时,则系统调用键盘钩子。

  nCodeHC_ACTIONHC_NOREMOVE,若小于0,则要求处理函数向下传递该消息。

  wParam表示按键键码常数,A键到Z键与其ASCII码的相应值''''是一致的,例如按C键,则wParam值为67

  lParamWM_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则是扩展键,否则为025-28位被保留。29(Context Code),状态描述码,ALT键被按下则为1,否则为030(Previouskey_stateflag)指定先前的键状态,如果消息被发出之前键处于按下状态,则为1;键处于释放状态则为031(Transiton_stateflag)状态转换标志,如果键是被按下值为1,如果键被放开值为0

  本例中的钩子用来监视并记录应用程序中的按键信息。在程序中,ALT+F4组合键被屏蔽。下面是部分代码:

Public hHook as Long
Private Sub Form_Load()
′程序启动时安装钩子

hHook=SetWindowsHookEx(2
Address of MyKBHook0App.ThreadID)
End Sub
′具体的钩子程序,本例中该过程被包含在Module1

Public Function MyKBHook(ByVal nCode As Long
ByVal wParam As LongByVal lParam As Long)As Long
If nCode>=0 then
Open "C:\Keyfile.txt" For Append As #1 '
将键盘的操作记录在Keyfile.txt文件之中

'
记录所操作的键、操作时间、日期操作时的按键状态,用16进制记录
Write #1
wParamHex(lParam)Datetime
Close #1
MyKBHook=0 '
表示要处理这个消息

'
屏蔽ALT+4组合键
if wParam=115 And(lParam And&H20000000)<>0 Then
if(lParam And &HC000000)=0 Then
  '是否进行ALT+F4操作
MyHBHook=1 '
钩子吃掉这个消息
End if
End if
End if
Call CallNextHookEx(hHook
nCodewParamlParam)'将消息传给下一个钩子
End Function
'
程序退出时卸载钩子
Private Sub Form_Unload(Cancel As Interger)
Call Unhook WindowsHookEx(hHook)
End Sub


  四、总结

  钩子处理程序是Windows高级编程技术,一般程序员都使用VC++等程序设计工具实现,本文表明,对于VB来说,虽然很多人认为是非专业的设计工具,但实现钩子这样的高级技术也是非常方便的。另外在使用钩子时应注意到,钩子虽然功能比较强,但如果使用不当将会严重影响系统的效率,所以要尽量避免使用系统钩子,并且在不用钩子时,应将钩子及时卸载。


本文源自:翔宇亭——IT乐园(http://www.biye5u.com),转载请保留此信息!

上一页  [1] [2] 

Tags:钩子 VB

知识评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 1分

内 容:

            请注意用语文明且合法,不要发布带有攻击性、侮辱性的言论,谢谢合作!

         通知管理员 验证码:

关于本站 | 网站帮助 | 广告合作 | 网站声明 | 友情连接 | 网站地图 | 用户守则 | 联系我们 |
本站大多数内容来自互联网或网站会员发布,如有侵权,请来信告之,谢谢!
Copyright © 2007-2017 biye5u.com. All Rights Reserved.
网站备案号:黑ICP备13005378号-3