Autor Beitrag
HelgeLange
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 735
Erhaltene Danke: 6

Windows 7
Delphi7 - Delphi XE
BeitragVerfasst: So 25.02.07 03:53 
Stehe gerade vor einem doofen Problem. Vielleicht könnt ihr mir ja helfen...

Ich habe diverse Komponenten, die man 1x beim Start der Anwendung initialisiert und alle anderen Komponenten benutzen dann ein shared Handle. Das hat den Vorteil, dass nicht jede Komponente den DLL-Namen jeweils speichern muss um diese dann zu laden um an die Einsprung-Adresse einer DLL zu kommen. Dazu hänge ich bisher ans Hauptfenster mithilfe von
ausblenden Delphi-Quelltext
1:
SetWindowLong(Handle, GWL_USERDATA, DWORD(pData));					

ein benutzer-definiertes record mit den entsprechenden Daten. Alle diese Komponenten haben in der Basisklasse die Möglichkeit implementiert, sich durch Fenster-Enumeration sich das richtige Fenster zu suchen und dann mithilfe des Handle sich diese Daten zu holen.

Jetzt das Problem : Zum Erkennen des Fenster nutze ich bisher den Klassen-Namen, z.B. TfMainForm. Jetzt wollte ich grad einen anderen Editor schreiben, der die gleichen Bibliotheken und Komponenten benutzt und durchaus zur gleichen Zeit laufen kann, wie die ursprüngliche Anwendung. Allerdings heisst ja dessen Hauptfenster-Klasse etwas anders. Nun kann ich aber in der Komponente nur einen Namen suchen (ich wusste, dass mir das irgendwann zum Verhängnis wird!!!) und ich kann nicht beide gleich nennen, da ich unter Umständen das falsche Fenster finde. Und in die Komponente kann ich das auch nicht als Property setzen, da ich ja dann auch den DLL-Namen setzen könnte, ich also keinen Vorteil mehr hätte.

Gibt es 'ne Möglichkeit, das Hauptfenster des CurrentThread, in welchem die Komponente läuft, herauszubekommen und dessen Handle natürlich ? Oder vielleicht jemand generell eine bessere Idee ?
Und NEIN, ich möchte keine INI-Files oder Registry lesen !

Danke schonmal...

_________________
"Ich bin bekannt für meine Ironie. Aber auf den Gedanken, im Hafen von New York eine Freiheitsstatue zu errichten, wäre selbst ich nicht gekommen." - George Bernhard Shaw