Autor Beitrag
yogo
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 121

Windowse, Linuxe
Delphi 3 Prof., D5 Enterprise, D6 Enterprise, Kylix, Delphi 2010
BeitragVerfasst: Mi 22.02.12 20:16 
Hallo, :wave:

ich versuche mehrere Instanzen einer DLL mit einander komunizieren zu lassen.


Es soll aus mehreren Instanzen auf eine Generics.Collections.TList zugegriffen werden(kompliziert, weil willkürliche Speicherbelegung durch Objekte darin).
Der Hintergrund ist, dass bei der Initialisierung z.B. Ini-Files gelesen und Internetverbindung aufgebaut werden muss => lange Ladezeiten, Overhead blabliblubb.

Alternativ würde es auch helfen, wenn ich einen String an die erste geladene Instanz übergeben könnte, wenn die Dll eine zweites Mal geladen wird(oder ein Programm gestartet).

Bis jetzt habe ich folgende Ideen gesammelt, wie man das bewerkstelligen könnte:

1. Den aktuellen String in eine Datei schreiben; Der Haupt-Prozess muss dann regelmäßig darein gucken (Rödel)

2. Suche im MSDN FILEMAPPING: den String in den Windows-Speicher schreiben, Prozess guckt regelmäßig.
(Größe, parallele Zugriffe, Speicherverwaltung?)

3. Dasselbe mit der ganzen Liste(unabsehbar viel Platz, Pointer-Probleme)

4. .NET/WMF? habe ich noch nicht ganz durchschaut und scheint auch nicht wirklich geeignet...

5. Pipes. Nur zu blöd, dass ich nicht weiß, wie ich eine frisch-aufgerufene Exe nachträglich
an meinen bereits bestehenden Prozess hänge, damit ich IO umleiten kann..
(PID in den gemeinsamen Speicher? Und weiter? Den bestehenden Prozess als Debugger setzen
und die neue Instanz kontrolliert "abschmieren" lassen?)

6. Umgekehrt: Die frisch gestartete Anwendung als Debugger an den Prozess hängen und den nachher wieder freigeben?


Das schönste wäre ja, wenn ich meine Methode in der fremden Instanz einfach irgendwie aufrufen könnte..
(Handle finden, sowie die addresse von der funktion und die parameter selbst in die register schieben..)

Oder gibt es etwas wie einen "überstatischen" variablentyp, der das für mich macht?(gabs da nicht sowas in java?)

Was kann ich tun, was macht sinn? vlt etwas neues? hier entstehen ja auch oft sehr gute Alternative Lösungen!

viele Grüße
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 24.02.12 03:35 
Such mal nach dem Stichwort IPC. Im Zusammenhang mit Memory Mapped Files ist das genau was du suchst. Ggf. Noch RegisterWindowMessage ...

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
yogo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 121

Windowse, Linuxe
Delphi 3 Prof., D5 Enterprise, D6 Enterprise, Kylix, Delphi 2010
BeitragVerfasst: Fr 24.02.12 09:25 
Juhu! Sieht gut aus, mir fallen die Augen aus, was ich bei meiner "gründlichen" Suche alles übersehen habe.
Vor allem "RegisterWindowMessage"!! dann muss ich noch ein "totes Fenster" anlegen, damit Messaging läuft, oder?

Ich bastele nachher mal los, danke, danke!!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 24.02.12 17:54 
Überlege Dir ggf. auch eine Strategie, was passieren soll, wenn das Programm, was bisher den "Server" gespielt hat beendet werden soll. Weil dann muss eine der anderen Instanzen übernehmen.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
yogo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 121

Windowse, Linuxe
Delphi 3 Prof., D5 Enterprise, D6 Enterprise, Kylix, Delphi 2010
BeitragVerfasst: Sa 25.02.12 16:15 
Ok, hier ist, was ich daraus gemacht habe. Vielleicht gibts nachher noch ein paar Verbesserungen:

Moderiert von user profile iconNarses: Inline- in normalen Anhang gewandelt.
Einloggen, um Attachments anzusehen!