龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

用VB编写键盘拦截程序(2)

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
说明 对于这两个事件来说,带焦点的对象都接收所有击键。一个窗体只有在不具有可视的和有效的控件时才可以获得焦点。虽然KeyDown()和KeyUp()事件可应用

  说明

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

  下列情况不能引用 KeyDown 和 KeyUp 事件:窗体有一个 CommandButton 控件,并且 Default 属性设置为 True 时的 ENTER 键。窗体有一个 CommandButton 控件,并且 Cancel 属性设置为 True 时的 ESC 键、TAB键,KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode ―显示物理的键(将 A 和 a 作为同一个键返回)和shift―显示shift+key键的状态而且返回A或a其中之一。

  如果需要测试 shift 参数,可使用该参数中定义各位的 shift 常数。该常数有下列值:

  常数 值 描述

  vbShiftMask 1 HIFT 键的位

   屏蔽。

  VbCtrlMask 2 CTRL 键的

   位屏蔽。

  VbAltMask 4 ALT 键的位

   屏蔽。

  该常数用作位屏蔽,它可被用来测试任何键组合。

  注意:如果 KeyPreview 属性被设置为 True,则一个窗体先于该窗体上的控件接收到此事件。可用 KeyPreview 属性来创建全局键盘处理例程。

  了解了以上知识,我们可以制作出非常完美而且带有快捷键的程序,例如我们在一个程序中要用Ctrl+S存盘,Shift最小化,Alt+X和ESC退出:

  首先启动vb选择新建EXE文件,在Form1窗体上拉一个TextBox,并把Form1的KeyPreview属性设为True,双击Form1,选择Form的KeyPress事件,输入如下代码:

  Private Sub Form_KeyPress(KeyAscii as Integer) 'Esc键退出,VbEscape可以用27代替

  If KeyAscii=VbEscape then End
  End Sub
  在Form的KeyDown事件中输入如下代码:
  Private Sub Form_KeyDown(KeyCode as Integer,Shift as Integer) '处理Ctrl+X,Shift,Alt+X
  If Shift=2 And KeyCode=VbKeyS Then Print #FileNum,Form1.Text1.Text 'Ctrl+S存盘,VbKeyS=83
  If shift=2 then Form1.WindowState=1 'Shift最小化
  If Shift=4 And KeyCode=VbKeyX Then End 'Alt+X退出,VbkeyX=88
  End Sub
  在Form的Load事件中输入如下代码:
  Private Sub Form_load()
  Dim FileNum as integer
  FileNum=FreeFile
  Open App.Path+“Sample.txt" For Append As #FileNum
  End Sub
  运行它就可以实现我们所要求的功能了,举这个例子只是抛砖引玉的作用.

精彩图集

赞助商链接