Entwickler-Ecke
Windows API - Formular aus DLL nur einmal erzeugen
f.elix - Mi 28.02.07 13:00
Titel: Formular aus DLL nur einmal erzeugen
Hallo erstmal ... wieder
Ich hab ein klitzekleines Problem...chen
Ich hab eine DLL, die alle meine Apps als Message-Ausgabe benutzen. Also wird ein Formular erzeugt:
NCMessageForm := TNCMessageForm.create(Application);Nun erzeugt jede Applikation eine eigene Instanz davon und bastelt sich ein eigenes Fenster - was nicht gewollt ist.
Also Handle ermitteln (und falls noch nicht existiert Fenster erzeugen) mit:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var MyHandle : THandle; begin MyHandle:= FindWindow('TNCMessageForm',nil); if MyHandle=0 then NCMyMessageForm := TNCMessageForm.create(Application) else NCMyMessageForm := ...-> Problem!!!
end; |
Wie mach ich aus dem gefundenen Handle ein NCMessageForm oder einen Zeiger darauf? Sendmessage will ich nicht nutzen.
Hat mal jemand einen schnellen Tip.
Vielen Dank schonmal.
Moderiert von
raziel: Delphi-Tags hinzugefügt
HelgeLange - Mi 28.02.07 13:14
eine DLL, welche in verschiedenen apps benutzt wird, wird auch mehrfach in den Speicher geladen. Dadurch hat jede Kopie der DLL seinen eigenen Adressraum, auch für Daten. Du kannst also nicht direkt ene Variable in der DLL setzen und danach Fenster anzeigen oder nicht.
Was du machen kannst : Einfach das Fenster suchen, wenn es existiert, garnicht erst neu erzeugen. Schau doch mal nach FindWindow etc...
Es gibt auch noch andere Methoden wie MemoryMappedFiles oder irgendwas in die Registry schreiben etc... Aber meiner Meinung nach ist das Fenster-Suchen das Beste.
f.elix - Mi 28.02.07 14:15
Titel: Findwindow ist wird genutzt
Hi, danke erstmal für die schnelle Antwort,
aber ich ermittle ja schon das Fester-Handle, falls eins existiert.
Aber wie bekomme ich einen Zeiger auf das Fenster, zu dem dieses Handle gehört?
HelgeLange - Mi 28.02.07 14:27
Frage Deine Form mit SendMessage...
achne.. das willste ja nicht benutzen.. Pech gehabt dann...
Warum machst Du denn den Führerschein, kaufst Dir ein Auto setzt dich rein und fährst dann nicht ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!