VBA控制鼠标键盘和激活窗口
'sleep函数
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'获取鼠标坐标
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare PtrSafe Function GetCursorPos Lib "User32" (lpPoint As POINTAPI) As Long
'鼠标
Private Declare PtrSafe Function SetCursorPos Lib "User32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare PtrSafe 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 Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN = &H8
Private Const MOUSEEVENTF_RIGHTUP = &H10
Private Const MOUSEEVENTF_MOVE = &H1
Sub getMouseAddr()
Dim Point As POINTAPI
GetCursorPos Point
MsgBox "鼠标横坐标为:" & Point.x & vbCrLf & vbCrLf & "鼠标纵坐标为:" & Point.y
End Sub
Sub rightClickBy(x As Integer, y As Integer)
SetCursorPos x, y
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub leftClickBy(x As Integer, y As Integer)
SetCursorPos x, y
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub doubleClickBy(x As Integer, y As Integer)
SetCursorPos x, y
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub rightClick()
mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub leftClick()
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub doubleClick()
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub delRow()
SendKeys "{END}"
Sleep 200
SendKeys "+{HOME}"
Sleep 200
SendKeys "{BS}"
'For i = 1 To 100
'SendKeys "{BS}"
'Next
End Sub
Sub mouseCopy(x As Integer, y As Integer, x1 As Integer)
SetCursorPos x, y
Sleep 100
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_MOVE, x1 - x, 0, 0, 0
Sleep 100
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100
End Sub
Sub test()
Dim x As Integer, y As Integer
x = -10
y = 0
mouse_event MOUSEEVENTF_MOVE, x, y, 0, 0
End Sub
'Sub a()
'VBA.AppActivate "Untitled - Notepad"
'SendKeys "abc"
'Call deleteRow
'End Sub
test
Sub copy_and_paste()
VBA.AppActivate "123.txt - Notepad"
SendKeys "abcdefg"
Sleep 500
SendKeys "+{HOME}"
Sleep 500
SendKeys "^C"
Sleep 500
SendKeys "{END}"
Sleep 500
SendKeys "{ENTER}"
Sleep 500
SendKeys "^V"
MsgBox "over"
End Sub
Sub f()
VBA.AppActivate "SAP"
Sleep 1000
Call leftClickBy(329, 243)
Sleep 500
SendKeys "abcdefg"
Sleep 500
Call delRow
Sleep 1000
SendKeys "abcdefg"
Sleep 500
Call mouseCopy(332, 242, 212)
End Sub
浙公网安备 33010602011771号