Ich hätte da noch eine Idee, wie man das mit
COM machen können:
Wenn eine Anwendung gestartet wird, schaut sie in der ROT (Running Objekt Table) nach einer bestimmten CoKlasse.
Ist es vorhanden, wird der Interface-Zeiger abgeholt, falls nicht wird das Objekt neu erzeugt.
Delphi-Quellcode:
try
connector := GetActiveOleObject('InterAppConnector.Application');
except
connector := CreateOleObject('InterAppConnector.Application');
end;
connector.AddMember('Programm XY Vers. 1.8');
...
connector.Collection.AddItem('test', 47.11);
Dieses
COM Objekt enthält nun eine Collection, in der beliebige Daten abgelegt werden können.
Zwei oder mehr Anwendungen haben jetzt gleichzeitig Zugriff auf die Collection und können dort lesen und schreiben.
Man könnte das noch weiter ausbauen, indem man verschiedene Collections zulässt.
Ausserdem könnte jede Anwendung eine Callback-Schnittstelle anmelden um sich über Änderungen informieren zu lassen.
Vorteile:
* Unabhängig von der Programmiersprache können so Daten zwischen verschiedenen Anwendungen (auch VB/Java-Scripts) ausgetauscht werden.
* einmal programmieren und immer wieder verwenden, da universell (unter Windows) einsetzbar
* Entladen der
ActiveX-
DLL wird von Windows automatisch erledigt
Nachteile:
* NamedPipes oder
TCP/
IP sind schneller