AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

.exe zu .exe Kommunikation

Ein Thema von KodeZwerg · begonnen am 19. Apr 2018 · letzter Beitrag vom 16. Okt 2018
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#1

.exe zu .exe Kommunikation

  Alt 19. Apr 2018, 23:45
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;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.994 Beiträge
 
Delphi 12 Athens
 
#2

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 00:05
Da bieten sich vielleicht Pipes an: How to pass string between 2 Delphi applications
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 06:18
Interprocess Communications
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
OLDIE1950

Registriert seit: 2. Jan 2018
22 Beiträge
 
#4

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 06:19
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
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:01
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
Gruß vom KodeZwerg

Geändert von KodeZwerg (20. Apr 2018 um 07:12 Uhr)
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#6

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:40
@günni0: Sollte dann die Empfänger .exe sowas wie einen Timer haben oder reicht da eine 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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#8

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:44
Die von dir geschriebene Art und Weise ohne Timer reicht.
Mit Timer da ist mir nix gekannt.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:45
Hey supi, dann mache ich mich mal sofort ans Werk.
Danke für Info!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#10

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:46
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 12:27 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