Hallo, liebe Delphi-Freunde!
Zur Zeit beschäftige (und quäle) ich mich mit folgendem Problem: Es geht darum, zu prüfen, ob ein (das aktive bzw. Vordergrund-)Fenster ein "Element" (Instanz, Variable, was auch immer) der Klassen
- SysListView32 und/oder
- TListView
enthält.
Das kleine und feine Programm "WindowInfo" von Luckie gibt einem die Möglichkeit, diesbezüglich auf aufschlußreiche Entdeckungsreise innerhalb von Windows zu gehen.
Leider ist das Problem komplizierter, als ich zunächst annahm. SysListView32 und TListView sind anscheinend keine Klassen von "Hauptfenstern", sondern von Elementen innerhalb von Fenstern. Und solche Elemente können davon mehrerer in einem Fenster/Window enthalten sein, ich erinnere nur einmal an Outlook Express, das allein 4 "Hauptanzeigeelemente" (die mit weißem Hintergrund) besitzt - von den verschiedenen anderen Elementen der Fensterklassen wie Toolbar, SysHeader & Co. ganz zu schweigen.
So nimmt es denn nachträglich kein Wunder, daß ich mit GetClassName an die o.g. gesuchten Klassennamen nicht herankomme (was ich zunächst hoffte), denn
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var Windowhandle:THandle; Klassenname:array[0..256] of Char;
begin WindowHandle:=GetForegroundWindow; getclassname(WindowHandle,Klassenname,SizeOf(Klassenname)); showmessage(Klassenname); |
liefert lediglich (mit jeweils zwei Meldungsfenstern hintereinander) solche Ergebnisse wie
- TMessageForm
- CabinetwClass
oder
-TMessageForm
-TFinder
u.ä. Die erste Meldung scheint übrigens immer TMessageForm zu lauten (hat ein Fenster etwa zwei Klassen?!).
Luckies Programm scheint auch GetClassName zu verwenden, nur hat es den Vorteil, mit dem hineingezogenen Mauscursor auch leicht an die inneren, "eingebetteten" Elemente eines Fensters zu gelangen.
Nun stellt sich die entscheidende Frage: Ist es möglich (und, falls ja, wie), an die Namen der Fensterklassen der Elemente innerhalb der Fenster zu gelangen (ohne einen Maucursor darüber schleifen zu müssen), meinetwegen auch als (mehr oder weniger komplexe, aber auswertbare) Datenstruktur - z.B. eine Liste?
Sollte ich diese Hürde überspringen, dann kann ich ein kleines, aber feines Programm (das vermutlich viele von Euch nützlich fänden) von seinem Ur- in sein - erstmalig vorzeigbares - Frühstadium überführen.
Wenn mir jemand weiterhelfen kann, wäre ich sehr erfreut.
Besten Dank im voaus für Eure Aufmerksamkeit und Euer Bemühen!
Netter Gruß
Delphi-Laie