黑客风云——风云网络
设为首页 加入收藏 我要投稿 网站地图
您现在的位置: 黑客风云 >> 黑客文章 >> 黑客进阶 >> 黑客编程 >> 文章正文
[推荐]用VB编写键盘拦截程序
      ★★★★★
用VB编写键盘拦截程序
文章整理发布:黑客风云 文章来源:www.05112.com 更新时间:2006-6-25
我们知道,在一些程序中,有一些快捷方式(如:Shift键最小化、ESC键退出、Ctrl+S存盘、Alt+x退出等等)。以前有一些介绍使用Win32 API可以做到,但过于繁琐,其实VB本身已经给我们提供了这个功能。 

  我们来新建一个窗体Form1,对于键盘操作可以看到有三个事件KeyPress(),KeyDown和KeyUp,下面我对它们分别介绍: 

  KeyPress()事件是当用户按下和松开一个ANSI键时发生(ANSI是可见ASCII字符1-127)。 

  语法  
  Private Sub object_KeyPress([index As Integer,]keyascii As Integer)  

  KeyPress事件语法包含下列部分: 

  部分描述 

  object一个对象表达式,其值是"应用于"列表中的一个对象。 

  index一个整数,它用来唯一标识一个在控件数组中的控件(仅有控件数组时才有)。 

  keyascii是返回一个标准数字ANSI键代码的整数。Keyascii通过引用传递,对它进行改变可给对象。 

  发送一个不同的字符。将keyascii改变为0时可取消击键,这样一来对象便接收不到字符。 

  说明 

  具有焦点的对象接收该事件。一个窗体仅在KeyPreview属性被设置为True时才能接收该事件。一个KeyPress事件可以引用任何可打印的键盘字符,一个来自标准字母表的字符或少数几个特殊字符之一的字符与CTRL键的组合,以及ENTER或BACKSPACE键。KeyPress()事件过程在截取TextBox或ComboBox控件所输入的击键时是非常有用的。它可立即测试击键的有效性或在字符输入时对其进行格式处理。改变keyascii参数的值会改变所显示的字符。 

  可使用下列表达式将keyascii参数转变为一个字符:  
  Chr(KeyAscii)  

  然后执行字符串操作,并将该字符反译成一个控件可通过该表达式解释的ANSI数字:  

  KeyAscii = Asc(char)  

  在KeyPress()处理不了的功能可以由KeyDown()和KeyUp()事件来处理:  

  语法  

  Private Sub object_KeyDown([index As Integer,]keycode As Integer, shift As Integer)  

  Private Sub object_KeyUp([index As Integer,]keycode As Integer, shift As Integer)  

  KeyDown和KeyUp事件包括下列部分:  

  部分描述  

  object一个对象表达式,其值是"应用于"列表中的一个对象。  

  index是一个整数,它用来唯一标识一个在控件数组中的控件(仅有控件数组时才有)。  

  keycode是一个键代码,诸如vbKeyF1(F1键)或vbKeyHome(HOME键)。  

  shift是在该事件发生时响应SHIFT ,CTRL和ALT键的状态的一个整数。shift、CTRL、ALT键在这些位分别对应于值1、2和4。例如:如果CTRL和ALT这两个键都被按下,则shift的值为6。 

  说明 

  对于这两个事件来说,带焦点的对象都接收所有击键。一个窗体只有在不具有可视的和有效的控件时才可以获得焦点。虽然KeyDown()和KeyUp()事件可应用于大多数键,它们最经常地还是应用于:扩展的字符键如功能键、定位键、键盘修饰键和按键的组合、区别数字小键盘和常规数字键;在需要对按下和松开一个键都响应时,可使用KeyDown和KeyUp事件过程。 

[1] [2] 下一页  

文章录入:cainiaowang    责任编辑:cainiaowang 
【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
Copyright @2006 黑客风云 ●业务联系:QQ 联系怪人 联系奇人 Email:给怪人发邮件 给奇人发邮件
ICP备案:冀06009886