AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi PostThreadMessage an bestimmtes Handle, analog zu PostMessage
Thema durchsuchen
Ansicht
Themen-Optionen

PostThreadMessage an bestimmtes Handle, analog zu PostMessage

Ein Thema von s.h.a.r.k · begonnen am 29. Jun 2010 · letzter Beitrag vom 29. Jun 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

PostThreadMessage an bestimmtes Handle, analog zu PostMessage

  Alt 29. Jun 2010, 17:22
Guten Abend,

gibt es eigentlich eine Möglichkeit PostThreadMessage() analog zu PostMessage() zu nutzen, d.h. dass man dort ein Handle angeben kann, an welches die Nachricht gehen soll. Denn PostThreadMessage() verschickt je lediglich eine Nachricht an einen Thread, nur woher soll der andere Thread denn wissen, an welches Handle die Nachricht gehen soll. Hintergrund ist mein LogController, der von beliebigen Threads aufgerufen werden kann (also Log() ) und eine Nachricht an den MainThread der Anwendung schickt, sodass dieser die Logs abarbeiten kann. Diese Benachrichtigung dient dem synchronisierten Abarbeiten.

// edit

Hab noch vergessen zu erwähnen, dass ich keinerlei Code in die Hauptanwendung schreiben will, da der LogController davon komplett unabhängig bleiben soll. Die einzige Idee, die ich hätte wäre ein globalen Nachrichten-Hook, aber das scheint mir irgendwie etwas zu viel des Guten zu sein.

mfg
Armin
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#2

AW: PostThreadMessage an bestimmtes Handle, analog zu PostMessage

  Alt 29. Jun 2010, 17:25
Die Nachricht geht eben an kein Windows-Handle, sondern wird direkt in die Nachrichtenverwaltung der Threads gesendet (in deren Message-Queue eingetragen) und über die Message-Loop verarbeitet.

Beim Abarbeiten der Message-Queue ist in diesem Fall dann das hwnd der Nachricht 0 (für kein Fenster, bzw. kein Objekt).

Wenn du also ein Window-Handle haben willst, dann wirst du auch PostMessage verwenden müssen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (29. Jun 2010 um 17:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: PostThreadMessage an bestimmtes Handle, analog zu PostMessage

  Alt 29. Jun 2010, 17:35
Dann musst du mir aber auch sagen, wie ich via PostMessage() eine Nachricht von einem Thread zu einem anderen schicke?

// edit
Ich kann explizit kein Synchronize() verwenden, da dieses PostThreadMessage() dafür da ist.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.152 Beiträge
 
Delphi 12 Athens
 
#4

AW: PostThreadMessage an bestimmtes Handle, analog zu PostMessage

  Alt 29. Jun 2010, 17:47
Indem du dir ein Fenster suchst, welches in diesem Thread erstellt wurde, bzw. mit diesem verbunden ist?

Du kannst dir auch geziehlt ein Message-Only-Window erstellen, welches nur für den Nachrichtenempfang und ähnliche Dinge zuständig ist.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: PostThreadMessage an bestimmtes Handle, analog zu PostMessage

  Alt 29. Jun 2010, 17:50
Hm, aber die Benachrichtigung muss an den MainThread gehen, sodass der Code, der durch die Message ausgeführt wird, durch den MainThread ausgeführt wird -> Ersatz für Synchronize. Wenn ich das Handle in dem Thread erzeuge und das PostMessage verwende, bringt mir das quasi Null.

// edit
Was heißt "mit diesem verbunden ist"?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.
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