Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Datenaustausch zwischen gleichen prozessen

  Alt 22. Feb 2006, 00:35
welches Beispiel hast du denn? Die Art und weise wie man zwischen programmen daten austauscht dürfte sich nicht von der gefundene unterscheiden. Nur eben die Art wie man die andere Instanz des Programmes findet. Dazu könntest du zum Beispiel ein MemoryMappedFile nutzen und dort die ganzen Instanzen ihr handle rein schreiben lassen.

Instanz1 (wird gestartet und) öffnet also das MemFile und bekommt mit das es das MemFile vorher noch nicht gab. Somit weiß es das es die erste Instanz ist und schreibt an die erste stelle in dem MemFile eine 1 und dahinter sein Handle (für die Kommunikation).

Instanz2 (wird gestartet und) öffnet das MemFile und bekommt mit es hat schon vor dem öffnen existiert.
Jetzt gibt es 2 Varianten:
Variante1: Es wird von der ersten Stelle die Anzahl gelesen (1) daraus wird eine 2 gemacht und zurück geschrieben. Desweiteren kann Instanz2 hinter das Handle von Instanz1 noch sein eigenes Handle schreiben. Nun Wird Instanz1 eine Nachricht geschickt das es eine weitere Instanz gibt und die Kommunikation kann los gehen.
Variante2: Es wird einfach das Handle aus dem MemFile gelesen und der ersten Instanz eine Message geschickt (mit dem handle von Instanz2). (Bei Variante2 fällt auch die Anzahl im MemFile weg)

Nun wissen also beide Instanzen von einander und können freudig Nachrichten per SendMessage und PostMessage austauschen.

[Edit]
Das angehangen Beispiel arbeitet nach dem Prinzip von Variante2. Es wird also davon ausgegangen das jenes Programm maximal 2 mal geöffnet wird.
[/Edit]
[Edit2]
Wenn eine der beiden Instanzen die an der Kommunikation teilnehmen geschlossen wird, so wird die andere Instanz benachrichtigt und das MemFile entspechend angepasst. Somit ist es möglich das man das Programm 2 mal öffnet (somit kann kommunikation beginnen), dann eine der beiden Instanzen beendet (somit ist kommunikation unterbrochen) und bei erneutem öffnen einer zweiten Instanz geht die Kommunikation von vorn los. Desweiteren wird jetzt unterbunden das eine dritte Instanz teilnehmen darf/kann.
[/Edit2]
Angehängte Dateien
Dateityp: zip prozesscomm_180.zip (2,6 KB, 26x aufgerufen)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat