![]() |
AW: Messages abfangen/mitlesen
Zitat:
Wenn die Messages nicht viel oder zu komplex sind; Vielleicht kannst du die Daten über einfache Textdateien austauschen? |
AW: Messages abfangen/mitlesen
Warum machst Du es nicht in einer DLL? Soweit ich weiß, hat jede DLL eine eigene VCL-Instance...
Theoretisch solltest Du die DLL 4x Laden können und hättest so 4 Worker-Threads... Mavarik Oder? |
AW: Messages abfangen/mitlesen
Kann man nicht Nachrichten per postthreadmessage an den (Haupt-)Thread des Konsolenprogrammes schicken?
|
AW: Messages abfangen/mitlesen
Zitat:
|
AW: Messages abfangen/mitlesen
Zitat:
Diese (per Threadschnappschuß beschaffbaren) Thread-IDs sind genauso systemeinmalig wie einige andere Werte (Prozeß-IDs, Heap-IDs, Fensterhandle, sicher gibt es noch mehr). Ich hatte mal mit postthreadmessage experimentiert, weil ich das Wissen um diese Problematik für ein anderes Programm benötigte, und konnte sehr wohl Messages auch an "prozeßfremde" Threads schicken. Da die Frage für mich beantwortet war, habe ich das Programm schon wieder gelöscht, es war auch nicht allzu kompliziert. |
AW: Messages abfangen/mitlesen
Liste der Anhänge anzeigen (Anzahl: 1)
Angehängtes Programm habe ich soeben noch einmal schnell zusammengebastelt, ganz so ähnlich wie damals.
Man kann damit vom VCL-Thread aus einem weiteren Thread des eigenen Programmes eine Botschaft schicken (einfach Thread-ID von einem Edit zum anderen hinüberkopieren). Startet man das Prgramm zweimal und kopiert die Threadnummern "über Kreuz", so kann man Messages auch munter zum Thread eben eines anderen Programmes versenden. |
AW: Messages abfangen/mitlesen
Danke für Eure Hilfe bis hierhin.
Ich habe es jetzt so gelöst, dass ich die erforderlichen Daten an ein Fenster ("normale", zweite VCL-Anwendung) sende und in diesem dann die Grafikbearbeitung nebst Umwandlung in png bzw. jpeg erfolgt. Das jeweilige Fensterhandle bekomme ich dabei mittels
Delphi-Quellcode:
.
FindWindow();
Jetzt beschäftige ich mich bereits damit, dass beide Programme jeweils nur einmal gestartet werden können. Ansonsten wäre Datensalat vorprogrammiert. Das wiederum bewerkstellige ich über einen Mutex. Dieser liefert mir eine aus meiner Sicht eindeutigeres Handle. Jetzt ist meine Idee, FindWindow nicht mehr zu benutzen und stattdessen das Handle über
Delphi-Quellcode:
zu erfragen.
OpenMutex()
Bevor ich das jetzt ausprobiere und es evtl. zufällig funktioniert und dann irgendwann einmal nicht mehr: Kann man das so machen? Es ist ja theoretisch nicht auszuschließen, dass ein anderes Programm durch Zufall denselben Fensternamen trägt... |
AW: Messages abfangen/mitlesen
Da das hier am besten reinpasst frage ich hier.
Wenn ich mit PeekMessage eine Message entgegennehme, ist nach abarbeiten des Codes der Aufruf von TranslateMessage und DispatchMessage dann zwingend erforderlich? |
AW: Messages abfangen/mitlesen
Zitat:
Zitat:
Zitat:
![]() ![]() |
AW: Messages abfangen/mitlesen
GetMessage zusammen mit einem WM_QUIT am Ende klappt in der Tat besser als PeekMessage.
Ich verwende GetMessage innerhalb eines Threads und PostThreadMessage von außerhalb. Muss ich die MessageQueue im Thread auch leeren? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:35 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