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]