AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

HWND_BROADCAST kommt nicht an?

Ein Thema von DGL-luke · begonnen am 10. Jul 2006 · letzter Beitrag vom 15. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#1

HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:14
Hallo, folgende einfache Quelltexte:

Defs:
Delphi-Quellcode:
const
  // app will send this as broadcast when going online, with wparam = handle
  WM_OnlineStatement = WM_USER + 1;
  // app will answer to this with above broadcast
  WM_OnlineQuestion = WM_USER + 2; //EDIT: war vorher 1 :roll:

Prog1
Delphi-Quellcode:
procedure OnWMOnlineQuestion(var Msg: TMsg); message WM_OnlineQuestion;


procedure TFLogMan.OnWMOnlineQuestion(var Msg: TMsg);
begin
  Beep;
  PostMessage(HWND_BROADCAST,WM_OnlineStatement,Handle,0);
end;
Prog2
Delphi-Quellcode:
procedure TForm2.BSearchLogAppClick(Sender: TObject);
begin
  SendMessage(HWND_BROADCAST,WM_OnlineQuestion,Handle,0);
  Beep;
end;

procedure TForm2.OnWMOnlineStatement(var Msg: TMsg);
begin
  LogHandle := Msg.wParam;
  MLog.Lines.Add('Log App answered: ' + IntToStr(LogHandle));
end;
Hoffe das ist ausreichend als Basis.

Folgendes problem: Die Messages kommen nicht an, weder WM_OnlineStatement noch WM_OnlineQuestion.

Mach ich was falsch?

EDIT: Uppsala... die messagedef wird sofort umgebogen... please stand by...
EDIT2: hat nix gebracht
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:38
Hallo,
das liegt daran, das SendMessage mit HWND_BROADCAST die Message nur an alle Top-Level Fenster sendet.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#3

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:43
Und ein Delphi-Fenster ist kein toplevel-fenster?! Bzw. Delphi reicht das nicht durch?
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#4

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:49
Zitat von DGL-luke:
Und ein Delphi-Fenster ist kein toplevel-fenster?! Bzw. Delphi reicht das nicht durch?
Ein Delphi Fenster kann ein Top-Level Fenster sein. Bei einem Delphi-Programm ist es das "unsichtbare" Application Fenster. Das Fenster reicht die Botschaft nicht weiter. Warum auch.
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#5

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:51
Zitat:
Warum auch.


Na weil ich die Message gefälligst haben will! Und zwar auf der Stelle! OK, wie häng ich mich in die top-level-botsdchaftsschleife ein? Ich muss doch wohl keinen hook setzen?!
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:53
Ich glaube, eine Behandlungsmethode für Application.OnMessage reicht

Juhuu ... mein 1784. Beitrag .... häh ?
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 20:55
ok... dann kommt hier die nächste deprimierung:

Delphi-Quellcode:
procedure TForm2.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.hwnd = HWND_BROADCAST then
    MLog.Lines.Add('!');

  if Msg.message = WM_OnlineStatement then
    MLog.Lines.Add('!!');
end;


EDIT: Im Logmemo tut sich natürlich nichts
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: HWND_BROADCAST kommt nicht an?

  Alt 10. Jul 2006, 21:17
Also bei mir gehts ...

Delphi-Quellcode:
var
  Form1: TForm1;
  msgid: Cardinal;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if Msg.message = msgid then
  begin
    Memo1.Lines.Add('Olé ! ' + IntToStr(Msg.hwnd));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  PostMessage(HWND_BROADCAST, msgid, 0, 0);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  msgid := RegisterWindowMessage('MyCoolTestProg');
  Memo1.Text := IntToStr(msgid);
  Memo1.Lines.Add(inttostr(Application.Handle));
  Memo1.Lines.Add(inttostr(Form1.Handle));
end;

end.
Die Message komt allerdings zweimal an ... einmal bei der Application und einmal ... bin ich grad am gucken
  Mit Zitat antworten Zitat
Lasse2002

Registriert seit: 29. Nov 2004
79 Beiträge
 
RAD-Studio 2009 Pro
 
#9

Re: HWND_BROADCAST kommt nicht an?

  Alt 11. Jul 2006, 17:33
Zitat von DGL-luke:
Folgendes problem: Die Messages kommen nicht an, weder WM_OnlineStatement noch WM_OnlineQuestion.
Glücklicherweise . Stell dir mal vor, was passieren würde, wenn Windows Messages aus dem Bereich WM_USER an alle Programme broadcasten würde. Dann würden dann viele Programme drauf reagieren und irgendwelchen Blödsinn machen.

Was du brauchst ist RegisterWindowMessage. Das Beispiel dazu hat jfheins ja schon geschrieben. Meine Erfahrung dabei zeigt aber, daß es leider Programme gibt, die auch auf eine solche Botschaft antworten, auch wenn sie das nicht tun dürften. Insofern sollte man wenn man eine zuverlässige Antwort braucht, auch diese Message nicht per Broadcast schicken, sondern nur selektiv (z.B. nur an Fenster mit einem bestimmten Titel).
Lasse
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#10

Re: HWND_BROADCAST kommt nicht an?

  Alt 11. Jul 2006, 18:42
OK, danke. werde das so machen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 00:33 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