![]() |
Funktionen in EXE-Datei exportieren
Hallo zusammen,
mal eine Frage an die Spezies. Vorab: Weiss nicht, ob's hier rein passt ;) Also, ich exportiere in einer EXE Datei Funktionen. Soweit, so gut. Nun möchte ich diese exportierten Funktionen von einer anderen EXE Datei aufrufen und dabei knallt's. Das Problem ist, dass "OnCreate" und co niemals durchlaufen werden. Kann ich das irgendwie umgehen? Oder habe ich etwas übersehen? Nutze nur "LoadLibrary(PChar(ProgramFile))" und "GetProcAdress". Paul |
Wenn ich Dich jetzt nicht falsch verstanden habe, muss ich Dich jetzt Fragen warum Du Die Funktionen nicht in einer DLL exportierst ?
|
Weil ich alles in einer Steuerapplikation habe. Ich möchte die Hauptanwendung API-fähig machen, ohne dass die eigentliche Anwendung externe DLL's nutzen muss. Bin nicht so sehr von von x-Dateien :)
|
Auch wenn das PE-Format es zulässt, ist der Export von Funktionen nicht für exe-Dateien gedacht, denn ein LoadLibrary auf exe-Dateien führt diese aus.
|
Natürlich ist es nicht gedacht aber für mich die einfachste Möglichkeit, Funktionen zu exportieren ohne extra eine neue DLL zu schreiben. Das Problem ist aber, dass LoadLibrary die EXE eben nicht startet. Ich kann auf die Funktionen zurückgreifen, jedoch stehen die in keinem Zusammenhang mit der Hauptform. Demnach wird also die Hauptform nicht erstellt bzw. Application.CreateForm nicht aufgerufen. Habe ja schon versucht, in der exportierten Funktion "Application.CreateForm" selbst aufzurufen ... ist aber übelst in die Hose gegangen.
Gibt es nicht irgendeinen Trick oder so? Paul |
Hallo,
schau mal ![]() und ![]() Allerdings wird hier das PE-Format mißbraucht, die Jedis machen es etwas besser, glaube ich. [EDIT] Ups, Du schreibst FUNKTIONEN, und ich meine Daten, ojeh!! Wird wohl nicht passen? :oops: [/EDIT] |
Nun, ich denke der vorgesehene Weg ist hier DCom (Interfaces).
Irgendwelche Tricks richen für mich dann immer nach Problemen ohne Ende, wenn das überhaupt irgendwie geht. Dll's werden in den Prozeßraum des ausführenden Programmes geladen, exe's werden das nicht, und dann muß es knallen, weil die Adressen im Prozeßraum des aufrufenden Programmes gar nicht gültig sind. Deswegen benötigt COM, DCOM COM+ ja die Stub/Proxy Mechanismen ... Der Trick ist dann diese Mechanismen auch zu verwenden. Grüsse Wolfgang |
Hmmmm. Problem ist nur dass ich nicht weiss, wie ich nachträglich eine bestehende EXE korrekt als DCOM Server ausstatten kann.
|
also,
Datei|Neu|Weitere|ActiveX|Automationsobject Aufgrund der Delohi-Unterstützung ist das weitere jetzt nicht viel Arbeit, aber ein wenig mit der Materie beschäftigen wird man sich jetzt schon noch müssen... Grüsse Wolfgang |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:23 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