![]() |
Komponente mit PostMessage TService-tauglich machen
Hi,
ich habe eine (Fremd)-Komponente, die, basieren auf TComponent sich ein WindowHandle holt und verschiendene Event über PostMessage feuert. Diese Komponente möchte ich jetzt in einem Service bzw. in einem Thread einsetzen. Als Thread kann er sich aber kein WindowHandle holen (wenn's nicht stimmt bitte korrigiert mich). Nun dachte ich mir, stell ich das einfach um auf PostThreadMessage. Statt eines WindowHandle hole ich mir einfach die ThreadID und brauch lediglich aus PostMessage->PostThreadMessage machen. Was mir natürlich fehlt ist die WndProc, die ja, wenn ich das ganze richtig verstanden habe, im Thread nicht geht. Also muss die Message über GetMessage oder PeekMessage in einer Schleife abgeholt werden. Dazu muss ich das der Execute-Methode unterbringen, richtig? Oder gibt es eine Möglichkeit sich innerhalb der Komponente in irgendeine MessageQueue einzuklinken? Ich muss dazu sagen, dass ich mit PostThreadMessage und so noch nie was gemacht habe. Immer nur mit WindowMessages. Vielleicht könnte ihr mich ein wenig erhellen. |
AW: Komponente mit PostMessage TService-tauglich machen
Was für ein Handle?
Warum nicht TWinControl, wenn es ein Handle HWND verwaltet? Zitat:
Doch, Messages in Threads gehen, wenn jemand (DU) die Messages auch verarbeitet. (GetMessage bzw. PeekMessage) Handle/HWND müssen auch in dem Thread erstellt (CreateWindow) werden, wo sie verarbeitet werden sollen. Beim ersten Aufruf einer Message-Funktion (z.B. CreateWindow/GetMessage/PeekMessage) wird automatisch eine MessageQueue für diesen Thread erzeugt. Und PostThreadMessage sendet direkt an den Thread, nicht an ein WinControl, also wird es auch vom keinem WinControl/WndProc empfangen/verarbeitet. DU mußt es also in deiner Message-Verarbeitung (GetMessage bzw. PeekMessage) deine Message abfangen und verarbeiten. (in der VCL kann man sich auch an Application.OnMessage TApplicationEvents.OnMessage hängen) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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