![]() |
Nachrichtenschleife ohne Fenster
Hallo zusammen,
ich wollte mal fragen ob es Gründe gibt Message-Only-Windows zu umgehen. Im vorliegenden Fall geht es wieder mal um einen Service, der von Haus aus ja keine Nachrichtenschleife hat in der ich Botschaften verarbeiten kann (oder?). Ich könnte nun besagtes Message-Only-Window erzeugen oder mir einen anderen Weg suchen die Daten auszutauschen. Gibt es da Dinge die ich berücksichtigen sollte? |
Re: Nachrichtenschleife ohne Fenster
Geht es um den die Delphi-Vorlage TService? Dort gibt es selbstverständlich eine Nachrichtenschleife (allerdings im Hauptthread, d.h. nicht im Service-Thread). Aber die Hauptfrage ist hier wohl: Wozu brauchst du ein Fenster?
|
Re: Nachrichtenschleife ohne Fenster
Es geht um einen Service der ohne VCL geschrieben wird. Zur Hauptfrage: Ich könnte mich mithilfe einer Nachrichtenschleife über bestimmte Ereignisse informieren lassen und dachte ich könnte diese dann auch selber für den Datenaustausch nutzen.
|
Re: Nachrichtenschleife ohne Fenster
Auch wenn es hier um einen Dienst geht, vielleicht bringt dir ja dieses allgemeine nonVCL Tutorial auch etwas, falls du das noch nicht kennst:
![]() |
Re: Nachrichtenschleife ohne Fenster
Zitat:
ich schätze mal, sicher bin ich mir nicht: wenn dein Dienst ein Windows erzeugt, ist noch kein User angemeldet und das Window wird auf einem normalerweise nicht zugänglichen Spezial-Desktop erzeugt (Genaues findet sich in den Tiefen von MSDN). Wenn sich irgendwann später ein User anmeldet, bekommt er seinen üblichen Desktop, aber FindWindow kann dein Dienst-Window nicht finden, weil FindWindow vom (User-) Desktop-Window ausgehend sucht, da ist aber kein Window des Dienstes. Gruss Reinhard |
Re: Nachrichtenschleife ohne Fenster
Interaktive Dienste gibt es unter Vista nicht mehr, da sie eine Sichrheitslücke darstellen.
|
Re: Nachrichtenschleife ohne Fenster
Danke für die Antworten!
Für mich sieht es so aus, als sollte ich ein Message-Only-Window umgehen. Es erscheint mir zum einen als unsauber und zum anderen auch als unpraktikabel. |
Re: Nachrichtenschleife ohne Fenster
Wenn du schon ein "Fenster" erzeugen willst, dann aber doch hoffentlih keines der VCL
und am besten ein "richtiges" ![]() z.B. ![]() PS: du brauchst nicht unbedingt ein Fenster, denn es ist auch möglich Nachrichten direkt an die MessageQueue eines Threads zu senden ![]() PostMessage träge eine Nachticht in die MessageQueue des Threads ein, worin ein Fenster erstellt wurde (bzw. in dem Thread, welcher für das Fenster angegeben wurde) |
Re: Nachrichtenschleife ohne Fenster
Hi,
für Dienste eignet sich aber eher eine Kommunikation über Sockets oder Pipes. Gruss |
Re: Nachrichtenschleife ohne Fenster
@thkerkmann: In diese Richtung wollte ich dann auch gehen. Danke für den Hinweis!
@himitsu: Ich spreche doch die ganze Zeit von Message-Only-Windows ohne VCL ;) Was die Thread-MessageQueue angeht: Das hört sich interessant an. Die könnte man dann auch für die Kommunikation zwischen einzelnen Threads nutzen, oder? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 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