VBA Mouse Jiggler?
12.04.2021 07:51:51
Klaus
ich habe bereits ein Makro von Nepumuk, mit dem ich Mausclicks ausführen kann. Jetzt möchte ich aber nicht clicken, sondern die Maus nur bewegen. Also wenn WhereAmI ergibt 100,50 möchte ich die Maus 4 Pixel hin- und zurück bewegen lassen (100-104,50 und 104-100,50) ohne zu clicken. Wie geht das?
Hintergrund: Ich habe keinen Zugriff auf die Energiesparkonfiguration meines PC's. Ich arbeite mit zwei PC's gleichzeitig, der zweite lädt passiv alle 5 Minuten Daten aus einer ACCDB und zeigt diese auf einem großem Monitor an - mein Dashboard. Hier möchte ich verhindern, dass ich alle 15 Minuten neu anmelden muss.
Ja, ich könnte die IT fragen. Die ist aber etwas .... schwerfällig :-) Darum frage ich lieber euch.
Andere Kollegen haben sich für ähnliche Zwecke einen USB Mouse Jiggler zugelegt, das möchte ich nicht.
LG,
Klaus
Option Explicit
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal Milliseconds As LongPtr)
Private Declare PtrSafe Sub mouse_event Lib "user32.dll" ( _
ByVal dwFlags As Long, _
ByVal dx As Long, _
ByVal dy As Long, _
ByVal cButtons As Long, _
ByVal dwExtraInfo As LongPtr)
Private Declare PtrSafe Function SetCursorPos Lib "user32.dll" ( _
ByVal x As Long, _
ByVal y As Long) As Long
Private Const MOUSEEVENT_LEFTDOWN As Long = &H2
Private Const MOUSEEVENT_LEFTUP As Long = &H4
Public Sub Test()
Call MouseClick(102, 19)
End Sub
Private Sub MouseClick(ByVal pvlngXPos As Long, ByVal pvlngYPos As Long)
Call SetCursorPos(pvlngXPos, pvlngYPos)
Call mouse_event(MOUSEEVENT_LEFTDOWN, 0&, 0&, 0&, 0)
Call mouse_event(MOUSEEVENT_LEFTUP, 0&, 0&, 0&, 0)
End Sub
Sub WhereAmI()
Dim pTargetPoint As POINTAPI
Dim lRetVal As Long
lRetVal = GetCursorPos(pTargetPoint)
MsgBox "Meine Position:" & vbLf & _
pTargetPoint.x & "," & pTargetPoint.y
End Sub