![]() |
Zeiger der Form über das Handle ermitteln
Hi Leute,
ich möchte gerne den Zeiger einer Form über das Handle ermitteln, soll heissen: Ich hole mir mit GetActiveWindow das handle des aktiven Fensters. Jetzt brauche ich den Zeiger auf das Fenster damit ich an die properties rankomme z.B. den ComponentCount. Hat jemand da mal 'nen guten Tip? Danke im vorraus, Sar |
Re: Zeiger der Form über das Handle ermitteln
mal im vorraus, das würde nicht mit c++/oder anderen programmen erstellten fenstern funktionieren, sonsdern WENN dann nur mit delphi fenstern....
um an die komponenten von den fenstern ranzukommen kannst du dich der funktionen FindWindow und FindWindowEx bedienen, beispiele wie diese funktionieren und welche parameter diese erwarten findest du im MSDN |
Re: Zeiger der Form über das Handle ermitteln
Das ist alles sehr problematisch, weil die VTable exakt identisch sein muß. Unter Umständen ist dein Programm so nur mit anderen Programmen kompatibel, die mit einer bestimmten Delphiversion kompiliert wurden.
Aus dem Handle selber kann man die Info vermutlich nicht erlangen. Aber Delphiforms haben bestimmte Properties (SetProp/GetProp Win32 APIs) welche eventuell einen "Eingang" erleichtern. Um in fremden Prozessen zu lesen brauchts dann nur noch die entsprechenden Funktionen. Ist aber alles sehr theoretisch und ich bin nicht sicher ob es überhaupt ginge. |
Re: Zeiger der Form über das Handle ermitteln
Ich will ja gar nicht in fremden Programmen rummanipulieren,
sondern nur in meinem eigenen d.h. eine komponente soll auf das aktive Fenster zugreifen - es ist aber nicht klar welches Fenster gerade aktiv ist. Mit FindWindow kann ich aber nur aufgrund der Caption das Handle bekommen, was mir abe rleider nicht hilft da ich das Handle ja bereits habe. An die Props der From muss ich ran, alles sehr komplizier, für 'ne eigentlich triviale Angelegenheit :( Aber schonmal Danke für die schnelle reaktionen :thumb: |
Re: Zeiger der Form über das Handle ermitteln
an die properties der Form kommst mit allerhand WinApi funktionen auch ran...
GetWindowRect GetWindowText GetWindowLong ... um an buttons listboxen und son kram ranzukommen helfen dir eventuell EnumWindows EnumChildWindows FindWindowEx ... für sämtliche "fenster"funktionen gibts nen extra kapitel in der msdn |
Re: Zeiger der Form über das Handle ermitteln
Mit EnumWindows komme ich zwar an alle möglichen infos
des Fensters aber den Zeiger bekomme ich darüber nu auch nicht sondern auch wieder nur das handle. :?: |
Re: Zeiger der Form über das Handle ermitteln
Hallo,
da alle automatisch erzeugten Formulare standartmäßig Application als Besitzer haben müsste man doch über Application.Components iterieren können und die Handles vergleichen. Ich vermute mal das FindWindow das Handle liefert, das auch in TForm.Handle enthalten ist. Wenn man ein Formular dynamisch mit Form2:=TFrom2.Create(Form1 oder im Scope vom Form1 mit Self ) erstellt müsste man noch über die Components der Formulare iterieren. Dies ist eine Vermutung. |
Re: Zeiger der Form über das Handle ermitteln
ja weil es nicht möglich ist an nen "zeiger" von IRGENDEINEM fenster heranzukommen - jedenfalls nicht so ohne weiteres, wie olli bereits schon sagte - machs lieber so wie es jeder andere auch macht und geh den weg über die Winapi
|
Re: Zeiger der Form über das Handle ermitteln
Zitat:
|
Re: Zeiger der Form über das Handle ermitteln
Nur um das klarzustellen. Mit Properties meinte ich nicht "Eigenschaften", sondern das was man mit SetProp() und GetProp() setzen und lesen kann (Win32 API).
EDA kann die anzeigen: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz