模拟鼠标点击很常用,
模拟鼠标移动不常用,但是当你用到时就明白了。
该加的控件都加上,命名随意。
代码很少
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) 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 Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Dim p As POINTAPI
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_MOVE = &H1
Dim b As Boolean
Private Sub Command1_Click()
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Command3_Click()
If Val(Text1) > 60000 Then Text1 = 60000
Timer1.Interval = Val(Text1)
Timer1.Enabled = False
Timer1.Enabled = True
End Sub
Private Sub Form_Load()
Combo1.AddItem "MouseMove"
Combo1.AddItem "MouseClick"
Combo1.ListIndex = 0
Timer1.Interval = Val(Text1)
End Sub
Private Sub Timer1_Timer()
If Combo1.ListIndex = 0 Then
GetCursorPos p
If b = False Then
'Call SetCursorPos(p.x + 5, p.y)
mouse_event MOUSEEVENTF_MOVE, 5, 0, 0, 0
b = True
Else
'Call SetCursorPos(p.x - 5, p.y)
mouse_event MOUSEEVENTF_MOVE, -5, 0, 0, 0
b = False
End If
Else
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End If
End Sub
SetCursorPos和mouse_event MOUSEEVENTF_MOVE的区别是,
其中一个可以禁止屏保。
如果要加全局热键,自行添加。
如果要托盘化,自行添加。