Oberstes Fenster an der Stelle (X|Y) finden
Hallo,
Ich habe das (imho eigentlich simple) Problem, dass ich ein Fenster an der Stelle X|Y finden will. Nun kommen allerdings 2 Umstände erschwerend hinzu: 1. Das ganze sollte sich nicht nur auf die Parent-Fenster beschränken (siehe WindowFromPoint) sondern ALLE Fenster beihnhalten. 2. Es sollte immer das vorderste genommen werden. Den ersten Punkt scheine ich mit EnumWindows umgangen zu haben... Nun scheitere ich jedoch daran mir den Z-Index zu holen. :wall:
Delphi-Quellcode:
Wie mache ich nun weiter?
function FindWindow(X, Y: Integer): HWND;
var H: HWND; Rec: TRect; AZ: Integer; function EnumProc(wnd: HWND; LParam: LPARAM): LongBool; stdcall; begin GetWindowRect(wnd,Rec); if (X>=Rec.Left) and (X<=Rec.Right) and (Y>=Rec.Top) and (Y<=Rec.Bottom) then begin H:=wnd; end; Result:=True; end; begin EnumWindows(@EnumProc, 0); Result := H; end; |
Re: Oberstes Fenster an der Stelle (X|Y) finden
Nutze einfach WindowFrom Point und dann EnumChildWindows
|
Re: Oberstes Fenster an der Stelle (X|Y) finden
Hi,
ich finde dein Code müsste bei dir eher so aussehen:
Delphi-Quellcode:
begin
Result:= True; GetWindowRect(wnd,Rec); if (X>=Rec.Left) and (X<=Rec.Right) and (Y>=Rec.Top) and (Y<=Rec.Bottom) then begin H:=wnd; Result := false;//abbrechen, das vorderste Fenster wurde gefunden end; end; |
Re: Oberstes Fenster an der Stelle (X|Y) finden
Zitat:
Zitat:
|
Re: Oberstes Fenster an der Stelle (X|Y) finden
kleiner Tipp: PtInRect():
Delphi-Quellcode:
If PtInRect(Point(x, y), lRect) then ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz