Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Nachrichtenschleife ohne Fenster (https://www.delphipraxis.net/131675-nachrichtenschleife-ohne-fenster.html)

Mr_G 28. Mär 2009 18:39


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?

Apollonius 28. Mär 2009 21:02

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?

Mr_G 29. Mär 2009 00:21

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.

jaenicke 29. Mär 2009 01:05

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:
http://www.delphi-treff.de/tutorials...ierung/nonvcl/

Reinhard Kern 29. Mär 2009 01:49

Re: Nachrichtenschleife ohne Fenster
 
Zitat:

Zitat von Mr_G
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.

Hallo,

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

Luckie 29. Mär 2009 03:11

Re: Nachrichtenschleife ohne Fenster
 
Interaktive Dienste gibt es unter Vista nicht mehr, da sie eine Sichrheitslücke darstellen.

Mr_G 29. Mär 2009 09:52

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.

himitsu 29. Mär 2009 10:46

Re: Nachrichtenschleife ohne Fenster
 
Wenn du schon ein "Fenster" erzeugen willst, dann aber doch hoffentlih keines der VCL
und am besten ein "richtiges" Hier im Forum suchenMessage-Only-Window?

z.B. http://www.delphipraxis.net/internal...=730310#730310

PS: du brauchst nicht unbedingt ein Fenster, denn es ist auch möglich Nachrichten direkt an die MessageQueue eines Threads zu senden MSDN-Library durchsuchenPostThreadMessage.
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)

thkerkmann 29. Mär 2009 11:34

Re: Nachrichtenschleife ohne Fenster
 
Hi,

für Dienste eignet sich aber eher eine Kommunikation über Sockets oder Pipes.

Gruss

Mr_G 29. Mär 2009 12:25

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 09:10 Uhr.
Seite 1 von 2  1 2      

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