SendKeys "{CAPSLOCK}"
函数有没有第二个参数了?
好久没用vb了
试一下发送tab建

解决方案 »

  1.   

    好像還有一個appactivate吧.
    試驗一下:
    AppActivate shell(text1.text,vbNormalFocus)
    Sendkeys "{CAPSLOCK}"
      

  2.   

    打錯了是
    AppActivate shell(Text1,vbNormalFocus)
    Sendkeys "{CAPSLOCK}"
      

  3.   

    再请教一下IMEStatus的用法。分数不够可以再加
      

  4.   

    如果只是想让文本框获得焦点时使字母变大写,我想用不着SENDKEYS,只需要用UCASE函数就可以了。
      

  5.   

    IMESTATUS是否应该是IMEMODE呀,如果你想让文本框获得焦点自动打开输入法,可以将IMEMODE的值设置为2(ON)然后将你常用的汉字输入法调整为排在第2位。
      

  6.   

    Const VK_CAPITAL = &H14
    Const KEYEVENTF_EXTENDEDKEY = &H1
    Const KEYEVENTF_KEYUP = &H2
    Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Sub Text1_GotFocus()
        keybd_event VK_CAPITAL, 0, 0, 0
        keybd_event VK_CAPITAL, 0, KEYEVENTF_KEYUP, 0   
    End Sub
      

  7.   

    如下方法可任意设定CapsLock ScrollLock NumLock的状态:
    Option Explicit
    Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
    Private Declare Function MapVirtualKey Lib "user32" Alias "MapVirtualKeyA" (ByVal wCode As Long, ByVal wMapType As Long) As LongConst KEYEVENTF_EXTENDEDKEY = &H1
    Const KEYEVENTF_KEYUP = &H2Public Sub SetNumLock(ByVal bLock As Boolean)
    Dim i As Boolean, ScanCode As Long
    i = CBool(GetKeyState(vbKeyNumlock) And vbShiftMask)
    If i <> bLock Then
       ScanCode = MapVirtualKey(vbKeyNumlock, 0)
       Call keybd_event(vbKeyNumlock, ScanCode, 0, 0)
       Call keybd_event(vbKeyNumlock, ScanCode, KEYEVENTF_KEYUP, 0)
    End If
    End Sub
    Public Sub SetScrollLock(ByVal bLock As Boolean)
    Dim i As Boolean, ScanCode As Long
    i = CBool(GetKeyState(vbKeyScrollLock) And vbShiftMask)
    If i <> bLock Then
       ScanCode = MapVirtualKey(vbKeyScrollLock, 0)
       Call keybd_event(vbKeyScrollLock, ScanCode, 0, 0)
       Call keybd_event(vbKeyScrollLock, ScanCode, KEYEVENTF_KEYUP, 0)
    End If
    End Sub
    Public Sub SetCapsLock(ByVal bLock As Boolean)
    Dim i As Boolean, ScanCode As Long
    i = CBool(GetKeyState(vbKeyCapital) And vbShiftMask)
    If i <> bLock Then
       ScanCode = MapVirtualKey(vbKeyCapital, 0)
       Call keybd_event(vbKeyCapital, ScanCode, 0, 0)
       Call keybd_event(vbKeyCapital, ScanCode, KEYEVENTF_KEYUP, 0)
    End If
    End SubPrivate Sub Form_Load()
    '调用例:
    SetCapsLock True
    'SetScrollLock True
    'SetNumLock True'SetCapsLock False
    'SetScrollLock False
    'SetNumLock FalseEnd Sub
      

  8.   

    在使用Visual Basic开发应用程序时,TextBox控件是最常用的(特别
    对于数据库程序),以下是笔者在开发应用程序时的一些技巧,希望对爱好
    VB的朋友有帮助。1、 限制TextBox只能输入数字。    我们只需要判断KeyAscii是否在48-57之间就可以达到目的,但我们还会
    要用到退格键的,所以必须加上KeyAscii <> 8。Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii <> 8 And KeyAscii < 48 Or KeyAscii > 57 Then
            Beep
    KeyAscii = 0
        End If
    End Sub2、自动将输入的英文转为小写/大写。     如果在KeyPress事件里使用Ucase$和Lcase$,那么当你输入abc时,Text
    Box里的结果会是CBA(具体原因这里不多说),我们只好判断它的KeyAscii,
    刚好大写与小写之间是相差32,所以……看下面的程序。'大写转小写
    Private Sub Text1_KeyPress(KeyAscii As Integer)
        If KeyAscii >= 65 And KeyAscii <= 90 Then
            KeyAscii = KeyAscii + 32
        End If
    End Sub'小写转大写
    Private Sub Text2_KeyPress(KeyAscii As Integer)
        If KeyAscii >= 97 And KeyAscii <= 122 Then
    KeyAscii = KeyAscii - 32
        End If
    End Sub3、使两个TextBox同步的方法。    这种方法怎么解释呢?第二个等于第一个就行了:-)。Private Sub Text1_KeyPress(KeyAscii As Integer)
        Text2=Text1
    End Sub4、按下 Enter 键之后,光标自动移到下一个控件。    当KeyAscii为13(回车)时,Send一个Tab键给它就行了。Private Sub Text1_KeyPress (KeyAscii As Integer)
        If KeyAscii = 13 Then
            SendKeys “{tab}”
            KeyAscii = 0
        End If
    End Sub5、当光标移到TextBox时自动选定其中的整串文字。    当对象得到焦点时,从最前面开始选取(SelStart=0),选取的
    长度为文本长度(Len(Text1))。Private Sub Text1_GotFocus()
        Text1.SelStart = 0
        Text1.SelLength = Len(Text1)
    End Sub6、当光标移到TextBox时改变其文字颜色。    当TextBox得到焦点时(GotFocus)改变文本颜色,失去焦点时(
    LostFocus)将还原文本颜色,ForeColor是设置文本的前景色。'当光标移到TextBox时文字设置为红色
    Private Sub Text1_GotFocus()
        Text1.ForeColor = vbRed
    End Sub'当光标移出TextBox时文字设置为黑色
    Private Sub Text1_LostFocus()
        Text1.ForeColor = vbBlack
    End Sub    以上代码只要将Text1.ForeColor改为Text1.BackColor即可改变TextBox
    的背景色。我补充一些:
    在使用textbox的时候,我喜欢把它的lock属性设为true,所有textbox里显示的内容都是在程序里控制设定的,这样的好处是利于控制,而且应用到password上,只要判断输入字符的多少,让文本框按数量显示星号,真正的输入仍然存在变量里,就比用textbox.passwordchar要好