AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Zeiger der Form über das Handle ermitteln
Thema durchsuchen
Ansicht
Themen-Optionen

Zeiger der Form über das Handle ermitteln

Ein Thema von SarDGer · begonnen am 8. Jun 2005 · letzter Beitrag vom 9. Jun 2005
Antwort Antwort
Seite 1 von 2  1 2      
SarDGer

Registriert seit: 19. Mai 2005
55 Beiträge
 
Delphi 7 Professional
 
#1

Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 13:37
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
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#2

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 14:08
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
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#3

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 14:44
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.
  Mit Zitat antworten Zitat
SarDGer

Registriert seit: 19. Mai 2005
55 Beiträge
 
Delphi 7 Professional
 
#4

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 14:53
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
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#5

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 14:55
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
  Mit Zitat antworten Zitat
SarDGer

Registriert seit: 19. Mai 2005
55 Beiträge
 
Delphi 7 Professional
 
#6

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 14:59
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.
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 15:05
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.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
barf00s
(Gast)

n/a Beiträge
 
#8

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 15:06
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
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#9

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 15:12
Zitat von SarDGer:
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.
Wer sagt, dass das aktive Fenster das mitmacht, was du möchtest? Das aktive Fenster ist nicht "deines" (sonst nutz die Eigenschaft Parent deiner Komponente um auf das Fenster zuzugreifen). Wenn es dein Fenster (von einem anderen von dir geschriebenen Programm) ist, nutz doch Messages (WM_USER, etc.)
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#10

Re: Zeiger der Form über das Handle ermitteln

  Alt 8. Jun 2005, 15:58
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: http://assarbad.net/stuff/eda_preview270.exe
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 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