![]() |
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. |
AW: Events GUI-Application <-> TService
IPC
![]() ![]() Zitat:
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) |
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... |
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. |
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 02:29 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