AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

.exe zu .exe Kommunikation

Ein Thema von KodeZwerg · begonnen am 19. Apr 2018 · letzter Beitrag vom 16. Okt 2018
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 07:52
Schau Dir mal den m-puff @ WMCOPYDATA Link an, da wird es mit einem Record beschrieben was ich genau so übernehmen mag.
Ich ersetze lediglich im Record einen Boolean mit einem Byte.
Mein Empfänger soll 3 Zeilen zeigen für 3 verschiedene Nachrichten Typen.
1. Sender fängt eine Operation an
2. Sender hat Operation beendet
3. Auswertungsergebniss von Operation oder Fehlernachricht

Ich habe gerade mal gegoogelt und der erste Treffer sagt was über TCopyDataStruct.
Hier ein kleines Beispiel um Nachrichten, Bilder oder Records damit zu verschicken.
Gruß vom KodeZwerg

Geändert von KodeZwerg (20. Apr 2018 um 08:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#12

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 08:27
Ich werfe da mal noch etwas rein. Mag vielleicht im ersten Moment etwas komisch klingen aber du kannst auch
TCP oder UDP für die Kommunikation zwischen Prozessen verwenden.
Finde ich z.B. angenehmer zu benutzen als Pipes oder Memory mapped Files.
WM_COPYDATA geht auch aber würde ich nicht benutzen wenn die Kommunikation über "Hier nimm das!" hinausgeht.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 08:33
@NG: Hättest Du dafür eventuell exemplarisch ein Beispiel-Code oder Link? Ich bin gerade dabei aus allen genannten Varianten eine Beispiel-Demo zu erstellen und anschließend hier zur Verfügung stellen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 08:41
Ehm.. Ich könnte evtl. später was basteln aber falls du schon mal Netzwerkkram gemacht hast mit TIdTCPClient o.ä. dann müsstest du das auch so hinkriegen.
Es macht letztendlich keinen Unterschied ob die Verbindung zwischen zwei Programmen auf unterschiedlichen PCs besteht oder zwischen 2 Programmen auf dem gleichen PC. Der Code ist derselbe.

Falls du mit Sockets noch nie was gemacht hast schau dir mal TIdTCPClient/TIdTCPServer an und such bei Google mal danach.
Wirst wahrscheinlich ne Menge finden.

Zu Memory mapped Files: Hab damals mal eine Unit dafür gebaut in dem extra eine Klasse für IPC enthalten ist:

https://www.delphipraxis.net/113289-mapped-streams.html

Falls du die Jedi JWSCL installiert hast, dann ist diese Unit als "JwsclStreams.pas" schon dabei.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 08:51
Danke, der Ansatz genügt mir, damit kann ich was Anfangen. Deine "mappedstreams_151.pas" werde ich mit einbauen
edit
Nein, momentan ist mein Delphi noch relativ jungfräulich was zusatz Pakete betrifft. Ein paar Kauf-Pakete sind drinnen, das war's dann schon.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#16

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 09:07
WM_COPYDATA kommt spätestens an seine Grenzen, wenn ein Prozess elevated ist und der andere nicht (was logischerweise auch der Fall ist bei Kommunikation mit einem Systemdienst). Auch mit mehreren Prozessen auf verschiedenen Sessions (RDP, Fast User Switching, Terminal Services) kommt man da nicht weiter.

Ob WM_COPYDATA, Pipes, MMF, oder TCP - das kommt sicher auf den Verwendungsfall an.

In Prozessen, von denen es nur eine Instanz geben soll, übergebe ich ich Parameter an den bereits laufenden Prozess per Pipe, da fällt WM_COPYDATA auch schon aus, weil der laufende Prozess ja elevated sein kann.

MMF verwende ich beispielsweise, um in einem Systemdienst einen Status zu schreiben, auf den mehrere andere Prozesse dann nur lesend zugreifen. Ist einfach zu greifen weil kaum anders als Dateihandling.

Mit TCP kann man ziemlich viel, ich würde da aber auf bewährte Kontrollstrukturen zurückgreifen, mindestens https, warum nicht gleich webservices, da muss man mit entsprechenden Helfern keine einzelne Zeile selberschreiben?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 10:23
Ich bin bereits daran alle Möglichkeiten einzubinden, siehe Bild server.jpg

edit
Erster Test mit WMCOPYDATA ergab übrigens genau was Du sagst, wenn Server Admin ist und Client nicht dann klappt es nicht.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#18

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 10:32
Wenn dein Beispiel gut funktioniert, sollte man es in die CodeLib aufnehmen wie ich finde.
Dann gäbe es eine zentrale Anlaufstelle für alle Fragesuchenden dieses Themas.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 10:50
Da hätte ich Grundsätzlich nichts gegen einzuwänden aber das überlasse ich wichtigeren Menschen
Momentan tüftel ich daran wie ich jede Methode in eine einzelne Unit quetsche damit man dann nur noch die entsprechende Unit sich rausfischen brauch, falls Bedarf an so etwas besteht.
Mein Sorgenkind ist gerade eher der Client, dem bringe ich gerade bei auf die verschiedenen Methoden auch korrekt zu reagieren, auch da wieder einzelne Units.
Bis auf das WMCOPYDATA was zwangsläufig in der Hauptunit verankert sein muss denke ich das alles ein Gutes Ende nehmen wird, aber vielleicht finde ich ja noch einen Weg das WMCOPYDATA da auch rauszuhalten, mal sehen.
Wenn es fertig ist stelle ich es unter Benutzerprojekte bereit.
Einen Thread-Titel der Aussagekräftiger als ".exe zu .exe Komminukation" muss ich mir auch noch einfallen lassen ^_^
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#20

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 11:03
WM_COPYDATA muss nicht in der Hauptunit (Formular-Unit) verankert sein.
Du kannst Nachrichten auch empfangen mit einem eigenen unsichtbaren Fenster, was du leicht durch AllocateHWnd erstellen kannst.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17: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