Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi .exe zu .exe Kommunikation (https://www.delphipraxis.net/196064-exe-zu-exe-kommunikation.html)

KodeZwerg 19. Apr 2018 23:45

.exe zu .exe Kommunikation
 
Hallo Gemeinde!
Ich würde gerne folgendes bewerkstelligen:
Man hat 2 .exe Dateien, ich habe eine Funktion oder Procedure in .exe A die einen String an .exe B sendet.
Ich habe gerade keine Idee und auch keinen Ansatz wie ich das machen könnte.
Ziel soll so etwas sein, stark vereinfacht:
Programm A
Delphi-Quellcode:
Procedure SendeAnB(const ID: Byte; const Nachricht: String);
Begin
// hier irgendwie die PID von B finden
// hier irgendwie die ID und den String an B schicken
End;

Procedure X;
Begin
  SendeAnB(1, 'Nachricht');
End;
Programm B = sucht aktiv nach Programm A Prozess und wartet auf eine ID und einen String um den dann Darzustellen.

Mein momentaner Gedankengang wäre das ich in beiden .exe eine PID abfrage für das andere Kompilat beziehe um bei A ein Senden zu ermöglichen und B sollte halt Empfangen können.

Geht so etwas überhaupt mit Delphi und falls es gehen sollte hätte da jemand eine Anlaufstelle für Informationen das ich so etwas hinbekomme?

Falls sich jemand fragt was das soll, hier ein Beispiel:
Delphi-Quellcode:
Programm A
 SendeAnB(1, 'Starte Berechnung');
 Berechne;
 SendeAnB(2, 'Berechnung beendet');

Programm B
 case GetMsg.ID of
  1: Label1.Caption := GetMsg.Nachricht;;
  2: Label2.Caption := GetMsg.Nachricht;
 end;

Uwe Raabe 20. Apr 2018 00:05

AW: .exe zu .exe Kommunikation
 
Da bieten sich vielleicht Pipes an: How to pass string between 2 Delphi applications

DeddyH 20. Apr 2018 06:18

AW: .exe zu .exe Kommunikation
 
Interprocess Communications

OLDIE1950 20. Apr 2018 06:19

AW: .exe zu .exe Kommunikation
 
Oder Memory Mapped Files (MMF)
https://www.delphipraxis.net/2583-kl...files-mmf.html

http://michael-puff.de/Programmierun...pets/MMF.shtml

PipeMessages
https://www.delphipraxis.net/34758-post.html#36961

KodeZwerg 20. Apr 2018 07:01

AW: .exe zu .exe Kommunikation
 
Vielen Dank an alle,
Pipes kannt ich bislang nur um Console Nachrichten abzufangen, das Beispiel im letzten Post bietet sogar eine (fast fertige) Klasse an falls es jemand interessiert!
Das hat mir enorm geholfen mich meinem Projekt zu widmen!
Ich Untersuche all eure Links und mache das beste daraus, das mit MMF sieht auch cool aus.

Vielen Dank!!!

edit
Der Tipp mit der Seite von m-puff, da bin ich auf etwas noch besseres gestossen: WM_COPYDATA

Wenn ich das zum laufen bekomme erziehlt es genau was ich wollte, kurz klein und schnittig ;-)

günni0 20. Apr 2018 07:34

AW: .exe zu .exe Kommunikation
 
WM_CopyData verwende ich ausschließlich. Es ist unkompliziert und funktioniert problemlos.

Bei mir haben zusammenhängende Exe-Dateien eine ID. Der Sender schickt seine ID im dwData mit und der Empfänger wertet die dann aus.
Auf diese einfache Art und Weise werden erstmal nur die eigenen Nachrichten verarbeitet.

KodeZwerg 20. Apr 2018 07:40

AW: .exe zu .exe Kommunikation
 
@günni0: Sollte dann die Empfänger .exe sowas wie einen Timer haben oder reicht da eine
Delphi-Quellcode:
procedure WMCOPYDATA(var msg: TWMCopyData); message WM_COPYDATA;
im { Public declarations } aus und es sucht automatisch nach Nachrichten?
Ich habe es bis jetzt noch nicht getestet.

günni0 20. Apr 2018 07:44

AW: .exe zu .exe Kommunikation
 
Die von dir geschriebene Art und Weise ohne Timer reicht.
Mit Timer da ist mir nix gekannt.

KodeZwerg 20. Apr 2018 07:45

AW: .exe zu .exe Kommunikation
 
Hey supi, dann mache ich mich mal sofort ans Werk.
Danke für Info!

günni0 20. Apr 2018 07:46

AW: .exe zu .exe Kommunikation
 
Ist wirklich sehr einfach. Pipes und sowas ist viel zu viel Code.

Ob man mit WMCOPYDATA aber eigene Records schicken kann, weiß ich leider nicht. Mir reicht aktuell noch das TCopyDataStruct.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:24 Uhr.
Seite 1 von 4  1 23     Letzte »    

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