AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Datenaustausch zwischen gleichen prozessen
Thema durchsuchen
Ansicht
Themen-Optionen

Datenaustausch zwischen gleichen prozessen

Ein Thema von m0sch3r · begonnen am 21. Feb 2006 · letzter Beitrag vom 22. Feb 2006
Antwort Antwort
m0sch3r

Registriert seit: 29. Mär 2004
121 Beiträge
 
Delphi 7 Enterprise
 
#1

Datenaustausch zwischen gleichen prozessen

  Alt 21. Feb 2006, 23:35
Tach an alle.
es sollen nachrichten zwischen zwei gleichen Prozessen ausgetauscht werden. Das Beispiel hier im forum bezieht sich auf zwei verschiedene Programme, die verschieden Namen haben


wie kann ich Meldungen zwischen Prozessen austauschen die denn gleichen Namen haben...!?

Bin für jeden Tip dankbar...)))
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz