AW: Cursorposition auf dem Bildschirm ausles
10.10.2021 09:12:23
volti
Hallo Sebastian,
jetzt habe ich es verstanden, aber ich glaube nicht, dass das möglich ist. Auch im IE nicht.
Wozu brauchst Du das bzw. was möchtest Du machen?
Wenn Du dort reinklicken möchtest um Text einzugeben, ermittle doch einfach im Vollbildmodus mit GetCurspos manuell die Koordinaten, um sie später im Makro zu verwenden. Hatte ich auch schon oft so gemacht und dann später mit Mouse_Event draufgeklickt.
Oder nutze z.B. Selenium
Hier ein Beispiel, wie man auf dem Bildschirm auf eine Position klicken kann.
Code:
[Cc][+][-]
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
Type POINTAPI
x As Long
y As Long
End Type
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 LongPtr)
Private Const MOUSEEVENTF_LEFTDOWN = &H2 ' left button down
Private Const MOUSEEVENTF_LEFTUP = &H4 ' left button up
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare PtrSafe Function GetForegroundWindow Lib "user32" () As LongPtr
Private Declare PtrSafe Function GetWindowRect Lib "user32" (ByVal hwnd As LongPtr, lpRect As RECT) As Long
Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Sub MausKlick()
' Linke Maustaste an X,Y-Position klicken und 100ms warten
Dim mCX As Long, mCY As Long, R As RECT
mCX = 710: mCY = 58 ' Position => anpassen
GetWindowRect GetForegroundWindow(), R ' Position Vordergrundfenster
mCX = mCX + R.Left: mCY = mCY + R.Top ' dazu addieren
SetCursorPos mCX, mCY ' Position setzen
mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
Sleep 100 ' Zur Sicherheit etwas warten
End Sub
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz