Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Kommunikation zwischen zwei Applikationen... (https://www.delphipraxis.net/41605-kommunikation-zwischen-zwei-applikationen.html)

plumper 5. Mär 2005 21:12


Kommunikation zwischen zwei Applikationen...
 
... auf dem gleichen Rechner

Hi Allerseits,

ich habe hier im Forum schon einige Themen gefunden: Named Pipes, Shared Memory, MailSlots...
Und ich habe auch die komponente von Sakura angesehen. Nur irgendwie bin ich zu blöd, die Beispiele zum Laufen zu bringen. Hat irgend jemand eine Gute Quelle, wo ich lernen kann, was die verschiedenen Techniken sind, wie die Funktionieren? Wie ich sie in Delphi programmiere?

Danke im Voraus,

Luckie 6. Mär 2005 13:28

Re: Kommunikation zwischen zwei Applikationen...
 
Sind die beiden Programme selber geschrieben? Bzw. hast du den Quellcode vorliegen und kannst ihn verändern? dann wäre meiner Meinung nacht die einfachste Möglichkeit mit der Nachricht MSDN-Library durchsuchenWM_COPYDATA. Damit kann man schon mal recht komplexe Datenstrukturen austauschen. Beispiel, wie immer auf meiner Homepage: http://www.luckie-online.de/Delphi/S..._COPYDATA.html

Zu beachten ist allerdings:
Zitat:

The data being passed must not contain pointers or other references to objects not accessible to the application receiving the data.
Womit AnsiStrings nicht übertragen werden können. Wie es mit PChars aussieht weiß ich nicht, das wäre noch zu prüfen.

Mal sehen, ob ich heute dazu komme, ich wollte schon die ganze Zeit mal das ganze mit MMFs machen. Eventuell habe ich heute Abend ein kleines Demo-Programm vorliegen.

Chewie 6. Mär 2005 13:54

Re: Kommunikation zwischen zwei Applikationen...
 
Zitat:

Zitat von Luckie
Womit AnsiStrings nicht übertragen werden können. Wie es mit PChars aussieht weiß ich nicht, das wäre noch zu prüfen.

Ist doch ganz einfach: Bei WM_COPYDATA wird einfach ein zusammenhängender Datenblock beliebiger Größe übertragen. Somit scheidet alles aus, was Zeiger auf Speicher außerhalb dieses Blocks enthält. Strings müssen hier inline als statische Arrays of Char oder ShortStrins abgelegt werden.

plumper 6. Mär 2005 14:13

Re: Kommunikation zwischen zwei Applikationen...
 
Oh yeah! Werde ich mir mal zu Gemüte führen...
//Edit: und ja! Sind beides selbst geschriebene Programme..

Jelly 6. Mär 2005 14:53

Re: Kommunikation zwischen zwei Applikationen...
 
Zitat:

Zitat von plumper
Oh yeah! Werde ich mir mal zu Gemüte führen...

Vielleicht hilft dir dazu im Zusammenhang von WM_COPYDATA meine Komponente Switchmodules weiter.

SirThornberry 6. Mär 2005 16:04

Re: Kommunikation zwischen zwei Applikationen...
 
ich hab da schon paar mal was gepostet. Hier kannst du ein Beispielprogramm herunterladen (arbeitet mit memory mapped files)

http://www.delphipraxis.net/internal...=221044#221044

Luckie 7. Mär 2005 21:56

Re: Kommunikation zwischen zwei Applikationen...
 
So, hier jetzt meine Version mit MMF:
http://www.luckie-online.de/Delphi/Sonstiges/MMF.html

Will man allerdings nur einen String übergeben und sollte dieser länger als 255 Zeichen sein, dann ist Sir Thornberrys Methode wohl die bessere.

plumper 7. Mär 2005 22:27

Re: Kommunikation zwischen zwei Applikationen...
 
Vielen Dank allerseits, es sind nicht allzuviele Daten, die Übertragen werden müssen. nur ein paar Steuerdaten undevtl. Fehlermeldungen/ Satusmeldungen.. Aber ich werde mir die Infos ansehen. Begeisterten Dank!! :bouncing4:

SirThornberry 13. Mär 2005 20:18

Re: Kommunikation zwischen zwei Applikationen...
 
Hab mir grad überlegt das es auch noch die Variante gäbe mit GlobalAlloc speicher zu reservieren (mit GMEM_MOVEABLE) und dann einfach per SendMessage die Speicheradresse an das andere Programm zu schicken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 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