用sendkeys (enter) 怎么不行??

解决方案 »

  1.   

    我要同时按下几个键怎么办??比如ctrl+w??
      

  2.   

    模拟鼠标与模拟键盘是两门算得上深奥的问题,(主要是看你用在那里),你两个问题一起问, 你不怕消化不良啊,呵呵....组合键就是使用^%+ 例如你说的 Ctrl + w 就是 "^%{w}"下面是模拟鼠标左右键与简单的Sendkeys按回车的代码'添加 Command1 Command2 Command3 Command4 Command5 Text1 Timer1 随便摆,请别漏了也不要叠在一起.Option Explicit
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
    Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
    Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
    Const MOUSEEVENTF_LEFTDOWN = &H2
    Const MOUSEEVENTF_LEFTUP = &H4
    Const MOUSEEVENTF_RIGHTDOWN = &H8
    Const MOUSEEVENTF_RIGHTUP = &H10
    Private Type POINTAPI
        X As Long
        Y As Long
    End Type
    Dim MyPoint() As POINTAPI
    Dim i&, X1&, Y1&, X2&, Y2&, Action%Private Sub Form_Load()
        Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
        Command1.Caption = "移到窗体中心"
        Command2.Caption = "模拟点击左键"
        Command3.Caption = "模拟点击右键"
        Command4.Caption = "模拟按回车键"
        Command5.Caption = "退 出"
        Clipboard.Clear
        Timer1.Interval = 1
        Timer1.Enabled = False
        Command1_Click
    End SubPrivate Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
       If KeyCode = 13 Then KeyCode = 0: MsgBox "你在Text1上面按了回车键"
    End SubPrivate Sub Text1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If Button = 2 Then Text1.SetFocus
    End SubPrivate Sub Command1_Click()
       Call GetStartXY
       X2 = (Me.Left + Me.Width / 2) \ 15
       Y2 = (Me.Top + Me.Height / 2) \ 15
       Action = 1
       Timer1.Enabled = True
    End SubPrivate Sub Command2_Click()
       Call GetStartXY
       X2 = (Me.Left + Command5.Left + Command5.Width / 2) \ 15
       Y2 = (Me.Top + Command5.Top + Command5.Height / 2 + 405) \ 15
       Action = 2
       Timer1.Enabled = True
    End SubPrivate Sub Command3_Click()
       Call GetStartXY
       X2 = (Me.Left + Text1.Left + Text1.Width / 2) \ 15
       Y2 = (Me.Top + Text1.Top + Text1.Height / 2 + 405) \ 15
       Timer1.Enabled = True
       Action = 3
       mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
    End SubPrivate Sub Command4_Click()
       Text1.SetFocus
       SendKeys Chr(13) 'SendKeys "{Enter}"
    End SubPrivate Sub Command5_Click()
        Unload Me
    End SubPrivate Sub Timer1_Timer()
       If X1 <= X2 Then
          X1 = X1 + 3
          If X1 >= X2 Then X1 = X2
       Else
          X1 = X1 - 3
          If X1 <= X2 Then X1 = X2
       End If
       
       If Y1 <= Y2 Then
          Y1 = Y1 + 3
          If Y1 >= Y2 Then Y1 = Y2
       Else
          Y1 = Y1 - 3
          If Y1 <= Y2 Then Y1 = Y2
       End If
       
       SetCursorPos X1, Y1
       If X1 = X2 And Y1 = Y2 Then
          Timer1.Enabled = False
          If Action = 1 Then
             Text1.SetFocus
             SendKeys Chr(13) 'SendKeys "{Enter}"
          ElseIf Action = 2 Then
             mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
          ElseIf Action = 3 Then
             mouse_event MOUSEEVENTF_RIGHTDOWN Or MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
          End If
       End If
    End SubSub GetStartXY()
       Randomize
       X1 = Int(Rnd * (Screen.Width \ 15))
       Y1 = Int(Rnd * (Screen.Height \ 15))
    End Sub
      

  3.   

    更正组合键就是使用^%+ 例如你说的 Ctrl + w 就是 "^{w}"