CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
花落谁家,你作主! 盛大widget设计大赛英雄榜
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

在VB中如何使用代码禁止Caps Lock键。急!!!!

楼主joeouyang(孤独老人)2004-09-03 22:04:54 在 VB / 基础类 提问

如题。 问题点数:100、回复次数:7Top

1 楼joeouyang(孤独老人)回复于 2004-09-03 22:07:13 得分 0

补充一下:是:如何在应用程序中禁止该键。Top

2 楼programfish(紫夜)回复于 2004-09-03 22:38:54 得分 50

你可以先用GetKeyboardState检测Caps   Lock的值,如果为开则将输入转换为小写就行了。  
   
  Option   Explicit  
   
  Private   Declare   Function   GetKeyState   Lib   "user32"   (ByVal   nVirtKey   As   Long)   As   Integer  
  Private   Declare   Function   GetKeyboardState   Lib   "user32"   (pbKeyState   As   Byte)   As   Long  
  Private   Declare   Function   SetKeyboardState   Lib   "user32"   (lppbKeyState   As   Byte)   As   Long  
   
  Private   Sub   SetKeyState(intKey   As   Integer,   fTurnOn   As   Boolean)  
  '取得键盘目前的状态,设定您想设定的任意键,再将其他键还成之前的状态,只改变一个键值  
  Dim   abytBuffer(0   To   255)   As   Byte  
  GetKeyboardState   abytBuffer(0)  
  abytBuffer(intKey)   =   CByte(Abs(fTurnOn))  
  SetKeyboardState   abytBuffer(0)  
  End   Sub  
   
  Function   GetCapslock()   As   Boolean  
  '返回   Capslock   的状态  
  GetCapslock   =   CBool(GetKeyState(vbKeyCapital)   And   1)  
  End   Function  
   
   
   
  Sub   SetCapslock(Value   As   Boolean)  
  '设定   Capslock   的状态  
  Call   SetKeyState(vbKeyCapital,   Value)  
  End   Sub  
   
   
  Private   Sub   Command1_Click()  
  SetCapslock   True   '   设定   CapslockLock为   On  
  End   Sub  
   
  Private   Sub   Command2_Click()  
  MsgBox   "CapslockLock:"   &   GetCapslock   '   取得   CapslockLock状态  
  End   Sub  
  Top

3 楼joeouyang(孤独老人)回复于 2004-09-03 22:52:54 得分 0

试了一下,效果是强制转换成大写。谢谢先。以后再结贴。看看还有没有别的办法呢Top

4 楼BlueBeer(1win)回复于 2004-09-04 02:46:25 得分 50

放一个timer实时监测,开了就自动关闭  
   
  Private   Declare   Function   GetKeyState   Lib   "user32"   (ByVal   nVirtKey   As   Long)   As   Integer  
  Private   Declare   Function   keybd_event   Lib   "user32"   (ByVal   bVk   As   Byte,   ByVal   bScan   As   Byte,   ByVal   dwFlags   As   Long,   ByVal   dwExtraInfo   As   Long)   As   Boolean  
   
  Private   Sub   Form_Load()  
          Timer1.Interval   =   1  
  End   Sub  
   
  Private   Sub   Timer1_Timer()  
          If   GetKeyState(20)   Then  
                  keybd_event   20,   0,   0,   0  
                  keybd_event   20,   0,   2,   0  
          End   If  
  End   SubTop

5 楼rainstormmaster(暴风雨 v2.0)回复于 2004-09-04 09:49:14 得分 0

你也可以试试用全局钩子解决Top

6 楼chen1bin2(天涯浪子)回复于 2004-09-04 10:25:38 得分 0

其实你可以在输入框中用下面代码就可以解决了,比如说Text1.Text只能输入大写字母,不能输入小写字母  
  Private   Sub   Text1_Change()  
                  Text1.Text   =   UCase(Text1.Text)       '强制转换为大写字母  
                  SendKeys   "{End}"                                   '并向Text1.Text发送键盘上的End键值  
  End   SubTop

7 楼jiang8360(姜)回复于 2004-09-04 14:02:13 得分 0

upTop

相关问题

  • 方向键的VB代码是什么??
  • VB代码转Delphi
  • vb->vb.net的代码
  • vb代码转换Delphi代码
  • VB代码转换成Delphi代码
  • 实用代码:【源码下载】全局键盘钩子的VB实现
  • *** VB =》Delphi 的代码转换?? ***
  • 如何优化VB代码?
  • 关于vb代码优化
  • 寻VB 或 JS 代码

关键词

  • 转换
  • abytbuffer
  • capslocklock
  • getcapslock
  • getkeystate
  • subprivate
  • 设定
  • keybd
  • 状态
  • sub

得分解答快速导航

  • 帖主:joeouyang
  • programfish
  • BlueBeer

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo