Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Events GUI-Application <-> TService (https://www.delphipraxis.net/208258-events-gui-application-tservice.html)

Hobbycoder 5. Jul 2021 11:48

Events GUI-Application <-> TService
 
Ich möchte gerne eine simple Kommunikation von einer Desktop-Application zu einem Service herstellen. Dabei reichen mir einfache Triggerevents völlig aus.
Mein erste Gedanke war einfach eine Windows-Message zu schicken. Leider komme ich aus dem Dienst mittels EnumWindows nicht an mein Fensterhandle. Auch nicht, wenn ich als Benutzerkonto im Dienst meinen eigenen Benutzer eintrage.

Welche einfache Möglichkeit hätte ich noch? Es geht mir darum, dass bei bestimmte Events im Service eine Botschaft zur Application übertragen wird, damit diese bestimmte Teilbereiche der dargestellten Information aktualisiert. Natürlich könnte ich die Information auch mittels Timer aktualisieren. Das wäre auch meine letzte Option.
Aber ich möchte den Traffic möglichst gering halten und die Informationen nur bei Bedarf aktualisieren.

himitsu 5. Jul 2021 12:07

AW: Events GUI-Application <-> TService
 
IPC
Hier im Forum suchenipc
Bei Google suchendelphi ipc

Zitat:

Fenster finden
Desktops sind getrennt (aus Sicherheitsgründen ist der übergreifende Zugriff standardmäßig gesperrt)
selbst wenn du das Fenster/Handle finden würdest, ist sind meistens auch Messages verboten (deine Anwendung hat geringere Rechte, als dein Dienst, also darf sie nicht)

Es wäre eventuell möglich die Messages freizuschalten, aber ...
Und außerdem gibt es genug Alternativen. (z.B. TCP/IP auf localhost wird oft genutzt)

Der schöne Günther 5. Jul 2021 13:23

AW: Events GUI-Application <-> TService
 
Ich habe mit Http bzw. REST sehr gute Erfahrung gemacht. Funktioniert einwandfrei und der Dienst müsste noch nichtmal auf dem gleichen PC laufen.

PS: Ich sehe du willst aus dem Service der Anwendung was mitteilen, ich erwartet dass die Anwendung der Client und der Dienst der Server ist...

Sinspin 5. Jul 2021 14:12

AW: Events GUI-Application <-> TService
 
Selbst wenn du IPC verwendest musst du dafür sorgen dass dein Service dem Named Pipe Server (IPC), die Rechte gibt von einer Nutzer Anwendung angesprochen zu werden.
Ich habe es via /NSoftware Name Pipes hinbekommen.
HTTP ist einfacher umzusetzen, abgesehen davon das man sich irgendwie über das Port des Servers verständigen muss.

Hobbycoder 5. Jul 2021 17:36

AW: Events GUI-Application <-> TService
 
Danke für eure Ausführungen. Ich habe mich letztlich für TCP-Server/Client entschieden.
Ich habe auf beiden Seite jeweils einen TCP-Server und einen TCP-Client in einen separaten Thread gepackt. Damit läuft der Message-Austausch ausreichend fix.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:15 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