Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Message an alle Fenster/systemweit (https://www.delphipraxis.net/117942-message-alle-fenster-systemweit.html)

Fussball-Robby 28. Jul 2008 20:34


Message an alle Fenster/systemweit
 
Hey,
eine Anwendung von mir läuft stetig im Hintergrund. Mehrere andere Programme von mir können währenddessen laufen. Zu bestimmten Zeitpunkten soll nun die Anwendung, die im Hintergrund läuft, eine Message an alle meine anderen Anwendungen senden (die Anzahl der Anwendungen sowie deren Name etc. ist nicht bekannt). So, nun die Frage: Ist es möglich, eine Message systemweit an alle Fenster zu senden? Ein Raussuchen meiner Fenster über FindWindow wäre sehr unflexibel und zudem nicht machbar, da die Namen der Anwendungen, wie schon gesagt, nicht bekannt sind.

Mfg

Apollonius 28. Jul 2008 20:35

Re: Message an alle Fenster/systemweit
 
Wenn es sich um Top-Level-Fenster handelt, kannst du die Nachricht an HWND_BROADCAST schicken.

HHennig 28. Jul 2008 20:37

Re: Message an alle Fenster/systemweit
 
So zum Beispiel:

SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, 0); // An alle: bitte neuen Drucker benutzen!

Fussball-Robby 28. Jul 2008 20:45

Re: Message an alle Fenster/systemweit
 
OK, Top-Level-Fenster sind Fenster mit Taskbar-Eintrag, oder erinnere ich mich da falsch?

Apollonius 28. Jul 2008 20:56

Re: Message an alle Fenster/systemweit
 
Nicht zwingend. Wenn ich mich nicht irre, ist ein Top-Level-Fenster lediglich als ein Fenster ohne Parent definiert. Der Taskbar-Eintrag hängt noch mit einem Window-Style zusammen.

Fussball-Robby 28. Jul 2008 21:01

Re: Message an alle Fenster/systemweit
 
Ist die Mainform einer Delphianwendung denn ein Top-Level-Fenster?

Apollonius 28. Jul 2008 21:08

Re: Message an alle Fenster/systemweit
 
Ich glaube nicht, aber dafür würde ich meine Hand nicht ins Feuer legen. Probiere es doch einfach mal aus.

Fussball-Robby 28. Jul 2008 21:12

Re: Message an alle Fenster/systemweit
 
Zitat:

Zitat von Apollonius
Probiere es doch einfach mal aus.

Auf die Idee bin ich gerade auch gekommen :cyclops: Message gesendet - nichts kommt an. So wird das wohl nichts.
Gibts noch andere Möglichkeiten / Ideen / Ansätze?

Apollonius 28. Jul 2008 21:16

Re: Message an alle Fenster/systemweit
 
Hast du es mal mit Application.OnMessage versucht? Application ist auf jeden Fall ein Top-Level-Fenster.

extrem 28. Jul 2008 21:31

Re: Message an alle Fenster/systemweit
 
Zitat:

Zitat von Fussball-Robby
Zitat:

Zitat von Apollonius
Probiere es doch einfach mal aus.

Auf die Idee bin ich gerade auch gekommen :cyclops: Message gesendet - nichts kommt an. So wird das wohl nichts.
Gibts noch andere Möglichkeiten / Ideen / Ansätze?

Wie wäre es wenn du mal die Suche benutzt?
HWND_BROADCAST kommt nicht an?

Fussball-Robby 28. Jul 2008 21:40

Re: Message an alle Fenster/systemweit
 
Die Lösung, die dort beschrieben wird, funktioniert. ABER.. da erst über RegisterWindowMessage eine "Message-ID" zugewiesen wird, ist diese ID variabel. Bei mir muss aber eine unabhängige Anwendung auf die Message reagieren, und dazu muss die ID schon konstant sein.

Apollonius 28. Jul 2008 21:42

Re: Message an alle Fenster/systemweit
 
Was ist eine "unabhängige Anwendung"?

Fussball-Robby 28. Jul 2008 21:45

Re: Message an alle Fenster/systemweit
 
"Unabhängig von der Anwendung, die die Message schickt. D.h., die andere Anwendung hätte bei variabler ID nicht die geringste Chance, auf die Message zu reagieren. Übrigens: Mit Application.OnMessage funktioniert es nur, wenn ich die Message and Handle schicke, bei HWND_BROADCAST kommt nach wie vor nichts an :?

Apollonius 28. Jul 2008 21:47

Re: Message an alle Fenster/systemweit
 
Der Witz an RegisterWindowMessage ist doch gerade, dass bei gleichem Parameter auch die gleiche ID herauskommt. Insofern kannst du sehr wohl kommunizieren.

Fussball-Robby 28. Jul 2008 21:49

Re: Message an alle Fenster/systemweit
 
Zitat:

Zitat von Apollonius
Der Witz an RegisterWindowMessage ist doch gerade, dass bei gleichem Parameter auch die gleiche ID herauskommt. Insofern kannst du sehr wohl kommunizieren.

Hach, ich glaube, meine Konzentration lässt langsam nach :? Ich habe mich eben noch gefragt, wozu der dämliche String-Parameter da ist :mrgreen:

Edit: Es funktioniert :cheers: Danke für deine Geduld mit mir :cyclops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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