Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#15

Re: dll als Bindeglied zwischen 2 Programmen

  Alt 1. Feb 2008, 16:55
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
Andreas
  Mit Zitat antworten Zitat