如题。

解决方案 »

  1.   

    你可以先用GetKeyboardState检测Caps Lock的值,如果为开则将输入转换为小写就行了。Option ExplicitPrivate 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 LongPrivate 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 SubFunction GetCapslock() As Boolean
    '返回 Capslock 的状态
    GetCapslock = CBool(GetKeyState(vbKeyCapital) And 1)
    End FunctionSub SetCapslock(Value As Boolean)
    '设定 Capslock 的状态
    Call SetKeyState(vbKeyCapital, Value)
    End Sub
    Private Sub Command1_Click()
    SetCapslock True ' 设定 CapslockLock为 On
    End SubPrivate Sub Command2_Click()
    MsgBox "CapslockLock:" & GetCapslock ' 取得 CapslockLock状态
    End Sub
      

  2.   

    放一个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 BooleanPrivate Sub Form_Load()
        Timer1.Interval = 1
    End SubPrivate Sub Timer1_Timer()
        If GetKeyState(20) Then
            keybd_event 20, 0, 0, 0
            keybd_event 20, 0, 2, 0
        End If
    End Sub
      

  3.   

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