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

  

 

posted @ 2023-07-01 13:13  CrossPython  阅读(854)  评论(0)    收藏  举报