22 Stimmen

Delphi/Lazarus: Handle des Fensters unter dem Maus-Cursor ermitteln

Frage von Gast | Letztes Update am 22.03.2023 | Erstellt am 08.01.2016

Ich würde gerne mit Delphi oder Lazarus ermitteln, welches Fenster gerade unter dem Mauscursor liegt. Das ganze sollte unter Windows laufen und zwar systemweit, also nicht nur in meiner eigenen Anwendung. Ich benötige das Handle dieses Fensters.

Ist das irgendwie möglich? Und falls ja, kann mir jemand sagen, wie das geht?

AntwortenPositivNegativ
2Beste Antwort2 Stimmen

Zunächst musst du die aktuelle Mausposition abfragen. Das geht mit der Funktion GetCursorPos(). Anschließend kannst du die Funktion WindowFromPoint() benutzen, um das Fenster an dieser Position zu ermitteln.

Hier ist ein Beispiel:

var
  ACursorPos: TPoint;
  AHandle: HWND;
begin

  if GetCursorPos(ACursorPos) then begin

     AHandle := WindowFromPoint(ACursorPos);

     if AHandle <> 0 then begin
        SendMessage(AHandle, ..., ..., ...);
     end;
  end;  

end;

Da beide Funktionen natürlich fehlschlagen können, solltest du wie in diesem Beispiel Bedingungen einbauen. Erst wenn sichergestellt ist, dass das Handle ungleich 0 ist, also ein Fenster gefunden wurde, solltest du fortfahren und das Handle benutzen. In dem Beispiel senden wir eine Message an das betreffende Fenster.
Letztes Update am 22.03.2023 | Erstellt am 08.01.2016

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Delphi: Systemweiter HotKey

Tutorial | 3 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.