通俗基础教程
电脑操作教程
电脑怎样拨号上网
如何做个人网页
怎样做局域网
Word教程(文字处理)
图形图象处理入门
经典提高教程
怎样使用代理服务器
如何做无盘工作站
Photoshop教程
Dreamweaver3教程
Flash4&5教程
Firework3教程
Frontpage2000教程
Authware教程
Office2000教程
如何制作动画图片
OICQ&ICQ使用方法

高手学习指南

硬件升级技巧
CGI教程
ASP教程

PHP教程

注册表使用技巧
路由器的设置
网站建设指南
SQL
最近更新:
Flash
相关内容

用VB切换三个特殊键 ——CapsLock键、NumLock键、ScrollLock键的状态

  在用VB编制应用程序时,经常遇到这种情况:有时需要大写;有时则需要小写输入汉字;有时需用数字小键盘输入数据等。这些情况都涉及三个特殊键——CapsLock键、NumLo ck键、ScrollLock键的使用。本文将介绍如何在应用程序中自动控制这三个特殊键的状态。
  实现原理
  这三个特殊键(CapsLock键、NumLock键、ScrollLock键)有时候可以称为切换(Togg le)键,即可将它们从一种状态切换到另一种状态。确定单个切换键的当前状态是可能的,但不能独立地改变这些键的状态。为了改变它们的状态,需要改动并修改键盘的状态图。键盘状态图是一个字节数组,其中包含了每个键的当前状态,可以利用该数组检索、修改并更新键盘状态图。Windows 95 API函数提供了实现上述操作的功能。GetKeyboardS tate函数用来将256个虚拟键的状态拷贝到指定的缓冲区中。其中pbKeyState参数的每个字节包含一个虚拟键的状态数据。若NumLock键被打开,则pbKeyState参数的对应值为1, 否则为0。SetKeyboardState函数用来将键盘状态数组拷贝到键盘状态表中。
  实现方法
  1. 建立含有如下控件的窗体: 表1
  2. 在目标文件列表(OBJECT)中选择GENERAL,在过程列表(PROC) 中选择DECLARATION S(声明),系统进入窗体级代码的定义窗口中。输入如下定义:
  Option Explicit
  Private Declare Function GetKeyboardStateLib "user32"Ali as(ByVal pbKeySt ate As String)As Boolean
  Private Declare Function SetKeyboardStateLib "user32"(By Val lppbKeyState As String)As Boolean
  Const VK_CAPITAL=&H14 'CapsLock键代码
  Const VK_NUMLOCK=&H90 'NumLock键代码
  Const VK_SCROLL=&H91  'ScrollLock键代码
  3. 在命令按钮1单击事件中,输入如下代码:
  Private Command1_Click() '切换CapsLock键的状态
  Dim tCaption As String
  tCaption=Command1.Caption
  If Instr(1,tCaption,"On")>0 then
   Call ToggleStateSet(VK_CAPITAL,True)
  Label1.BackColor=vbWhite
  '若CapsLock键是Off时,指示灯为白色
   Command1.Caption="CapsLockOff"
  Else
   Call ToggleStateSet(VK_CAPITAL,False)
   Label1.BackColor=vbGreen
  '若CapsLock键是On时,指示灯为绿色
   Command1.Caption="CapsLockOn"
  End If
  End Sub
  命令按钮2和3单击事件的代码与按钮1类似,分别切换Num Lock键和Scroll Lock键的状态。
  4. 在命令按钮4单击事件中,输入如下代码:
  Private Command4_Click()
  End
  End Sub
  5. 在设置三个特殊键状态转换事件中,输入如下代码:
  Sub ToggleStateSet(nKeyCode As Integer,bState As Boolean )
  Dim tKeyboardMap As String*256
  Dim bResult
  tKeyboardMap=String$(255,0)
  bResult=GetKeyboardState(tKeyboardMap)
  If bState=True Then
   Mid$(tKeyboardMap,nKeyCode+1,1)=‘1'
  Else
  Mid$(tKeyboardMap,nKeyCode+1,1)=‘0'
  End If
  bResult=SetKeyboardState(tKeyboardMap)
  EndSub
  上述程序在同创P/200、中文Windows 95、Windows NT 4.0、Vi sual Basic 5.0软硬件环境下运行通过。
  江苏 蔡可训

用VB实现多文件查找与替换功能
用VB 5.0 设计Browser及FTP程序
用Visual Basic 5.0设计E-mail程序
谈谈WIN API在VB中的应用
在VB中使用Word的“艺术字”工具
获取Win95特殊目录准确路径
配置文件.ini在VB5中的应用
控制结构VB5程序设计
用VB切换三个特殊键
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
教程站
收集整理