Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Cursorposition auf dem Bildschirm ausles

Forumthread: Cursorposition auf dem Bildschirm ausles

Cursorposition auf dem Bildschirm ausles
09.10.2021 07:14:46
Sebastian
Hi Leute,,
ich steuere mit VBA eine Seite im Chrome Browser (Virtual KeyCodes). Jetzt würde ich gerne wissen ob es möglich ist Koordinaten des aktiven Cursors auszulesen. Für die Maus kenne ich den Code aber gibt es sowas auch für den Cursor?
Vielen Dank und viele Grüße
Sebastian
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cursorposition auf dem Bildschirm ausles
09.10.2021 08:35:06
volti
Hallo Sebastian,
falls Du mit "Cursor" das aktive Excelfeld meinst, schau Dir nachfolgendes Beispiel an. Dort werden die Koordinaten der linken, oberen Ecke der Zelle ausgegeben.
Wenn Du den Mauscursor direkt auf diese Ecke fährst, sollten beide Positionen gleich sein.
Vielleicht ist es das, was Du suchst.
Code:

[Cc]

Private Declare PtrSafe Function GetCursorPos Lib "user32" ( _ lpPoint As POINTAPI) As Long Type POINTAPI X As Long Y As Long End Type Sub PosTest() Dim pt As POINTAPI, X As Integer, Y As Integer GetCursorPos pt ' Mausposition X = ActiveWindow.ActivePane.PointsToScreenPixelsX(ActiveCell.Left) Y = ActiveWindow.ActivePane.PointsToScreenPixelsY(ActiveCell.Top) Debug.Print pt.X, X, pt.Y, Y End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Cursorposition auf dem Bildschirm ausles
10.10.2021 07:01:29
Sebastian
Hi Karl Heinz,,
nein das meine ich leider nicht.
Ich brauche die Position eines Eingabefeldes im Chrome Browser. Früher habe ich das im IE ausgelesen. aber die neuen Browser haben ja nicht wirklich von Haus aus eine VBA Steuerung.
Ich benötige genau die Koordinaten da wo der Textcursor blinkt und auf Eingabe wartet :-)
Viele Grüße und Danke
Sebastian
Anzeige
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

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Koordinaten des Cursors im Browser auslesen


Schritt-für-Schritt-Anleitung

Um die Cursorposition im Browser auszulesen, kannst du den folgenden VBA-Code verwenden. Dieser Code nutzt die GetCursorPos-Funktion, um die aktuellen Koordinaten des Cursors zu ermitteln.

Private Declare PtrSafe Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Type POINTAPI
    X As Long
    Y As Long
End Type

Sub GetCursorCoordinates()
    Dim pt As POINTAPI
    GetCursorPos pt
    Debug.Print "X: " & pt.X & ", Y: " & pt.Y
End Sub

Dieser Code gibt die X- und Y-Koordinaten des Mauscursors in der Debug-Konsole von Excel aus. Du kannst diesen Code in einem Modul in Excel VBA einfügen und ausführen. Beachte, dass du die Koordinaten manuell anpassen musst, um genau die Position zu ermitteln, an der der Cursor blinkt im Browser.


Häufige Fehler und Lösungen

Fehler: Die Koordinaten sind nicht korrekt.

Lösung: Stelle sicher, dass du die Position relativ zum aktiven Fenster berechnest. Nutze die GetWindowRect-Funktion, um die Position des aktiven Fensters zu ermitteln und addiere diese zu den Koordinaten des Cursors.

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

' Beispiel zum Ermitteln der korrekten Koordinaten
Sub GetAdjustedCursorCoordinates()
    Dim pt As POINTAPI
    Dim hwnd As LongPtr
    Dim rect As RECT

    hwnd = GetForegroundWindow()
    GetCursorPos pt
    GetWindowRect hwnd, rect

    Debug.Print "Adjusted X: " & pt.X - rect.Left & ", Adjusted Y: " & pt.Y - rect.Top
End Sub

Alternative Methoden

Wenn du die Mauskoordinaten anzeigen möchtest, kannst du auch Tools wie Selenium verwenden, um die Interaktion mit dem Browser zu automatisieren. Mit Selenium kannst du gezielt auf Elemente im Browser klicken, ohne die Koordinaten manuell zu ermitteln.

Hier ist ein einfaches Beispiel, wie du mit Selenium die Mausposition anzeigen kannst:

' Beispielcode für Selenium
Dim driver As New WebDriver
driver.Start "chrome"
driver.Get "http://example.com"
driver.FindElementByName("inputField").Click

Praktische Beispiele

Ein praktisches Beispiel wäre, wenn du die Koordinaten des Cursors erfassen und dann einen Klick an dieser Stelle ausführen möchtest. Verwende dazu den folgenden Code:

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 dwData As Long, ByVal dwExtraInfo As Long)

Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4

Sub ClickAtCursorPosition()
    Dim pt As POINTAPI
    GetCursorPos pt
    SetCursorPos pt.X, pt.Y
    mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
    mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub

Tipps für Profis

  • Nutze die Debug.Print-Funktion, um Variablen und Koordinaten während der Entwicklung zu überwachen.
  • Experimentiere mit verschiedenen Browsern und stelle sicher, dass du die richtigen APIs verwendest, um die Cursorposition zu ermitteln.
  • Achte darauf, dass dein VBA-Projekt die richtigen Berechtigungen hat, um mit externen Anwendungen (wie dem Browser) zu interagieren.

FAQ: Häufige Fragen

1. Kann ich die Cursorposition auch in anderen Anwendungen auslesen? Ja, die GetCursorPos-Funktion kann in jeder Anwendung verwendet werden, die VBA unterstützt, solange die entsprechenden API-Deklarationen vorhanden sind.

2. Ist es möglich, die Cursorposition in Echtzeit zu verfolgen? Ja, du kannst eine Schleife erstellen, die die Cursorposition kontinuierlich abfragt und anzeigt. Beachte jedoch, dass dies die Systemressourcen belasten kann.

3. Funktioniert dieser Code in Excel für Mac? Die hier verwendeten API-Deklarationen sind spezifisch für Windows. Auf einem Mac sind andere Ansätze erforderlich, die möglicherweise die Verwendung von AppleScript oder anderen Tools erfordern.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige