![]() |
.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:
Programm B = sucht aktiv nach Programm A Prozess und wartet auf eine ID und einen String um den dann Darzustellen.
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; 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; |
AW: .exe zu .exe Kommunikation
Da bieten sich vielleicht Pipes an:
![]() |
AW: .exe zu .exe Kommunikation
|
AW: .exe zu .exe Kommunikation
Oder Memory Mapped Files (MMF)
![]() ![]() PipeMessages ![]() |
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: ![]() Wenn ich das zum laufen bekomme erziehlt es genau was ich wollte, kurz klein und schnittig ;-) |
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. |
AW: .exe zu .exe Kommunikation
@günni0: Sollte dann die Empfänger .exe sowas wie einen Timer haben oder reicht da eine
Delphi-Quellcode:
im { Public declarations } aus und es sucht automatisch nach Nachrichten?
procedure WMCOPYDATA(var msg: TWMCopyData); message WM_COPYDATA;
Ich habe es bis jetzt noch nicht getestet. |
AW: .exe zu .exe Kommunikation
Die von dir geschriebene Art und Weise ohne Timer reicht.
Mit Timer da ist mir nix gekannt. |
AW: .exe zu .exe Kommunikation
Hey supi, dann mache ich mich mal sofort ans Werk.
Danke für Info! |
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 21:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz