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
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#1

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.691 Beiträge
 
Delphi 11 Alexandria
 
#2

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
 
#3

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.691 Beiträge
 
Delphi 11 Alexandria
 
#4

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
 
#5

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
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 11:21
Ich werde heute noch zum Piraten so oft wie ich schon "ahhhhrg" schrie )
PERFEKTER TIPP *KUSSI BUSSI*
Den werde ich exakt wie beschrieben umsetzen, dann sind seperate Units Null Problemo.

Vielen Dank @NG!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.813 Beiträge
 
Delphi 12 Athens
 
#7

AW: .exe zu .exe Kommunikation

  Alt 20. Apr 2018, 14:46
TCP hat einen entscheidenden Nachteil: Es ist nicht unmittelbar Terminalserver tauglich. Da die Applikationen einen definierten Serverport aufmachen müssen, geht das pro Maschine nur ein Mal. Man kann das im Terminalserver wohl konfigurieren, daß der gleiche Port mehrfach vergeben werden kann, aber daran muß man denken. Hab ich vor 15 Jahren alles mal durchmachen müssen, und bin am Ende für IPC bei COM gelandet...was richtig Geil lief, aber "because of popular demand" dann doch einen Schritt zurück zu WMCOPYDATA gegangen.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#8

AW: .exe zu .exe Kommunikation

  Alt 16. Okt 2018, 14:28
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).
Hier kann MSDN-Library durchsuchenChangeWindowMessageFilterEx Abhilfe schaffen, sofern sich die Fenster auf dem gleichen Desktop (oder war's die gleiche WindowStation?) aufhalten.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:25 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