模拟鼠标与模拟键盘是两门算得上深奥的问题,(主要是看你用在那里),你两个问题一起问, 你不怕消化不良啊,呵呵....组合键就是使用^%+ 例如你说的 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
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