![]() |
Windows-Message WM_... abfangen ???
hallo. mit folgende code ist es ja möglich eine message für alle komponenten bzw. fenster einer Anwednung abzufangen.
Delphi-Quellcode:
das funktioniert auch soweit, bis auf ein Item eines Mainmenüs was ich in eine Toolbar gesteckt habe!
private
{ Private-Deklarationen } procedure GetMessages(var msg: TMsg; var handled: boolean); ... procedure TForm1.FormCreate(Sender: TObject); begin Application.OnMessage:=GetMessages; end; procedure TForm1.GetMessages(var msg: TMsg; var handled: boolean); begin if msg.message = WM_RBUTTONDOWN then begin // was ausgführt werden soll handled:=true; end; end; Warum funktioniert es dort nicht? Hat da jemand eine Idee? Danke im voraus??? |
Re: Windows-Message WM_... abfangen ???
Die Toolbar "sieht sich" als vollwertiges Fenster und erhebt anspruch auf eine eigene Nachrichtenschleife und fängt die Nachrichten somit selbst ab.
|
Re: Windows-Message WM_... abfangen ???
danke für die antwort.
gibt es denn die möglichkeit die botschaften die an die toolbar gesendet werden abzufangen? |
Re: Windows-Message WM_... abfangen ???
|
Re: Windows-Message WM_... abfangen ???
nach hooks hab ich auch schon gekuckt, aber nicht wirklich was passendes gefunden.
hättest du rat für mich? |
Re: Windows-Message WM_... abfangen ???
Hi,
ich kenne mich selbst nicht mit Hooks aus, aber für dein Vorhaben wirst du imho (!) Hooks benutzen müssen. |
Re: Windows-Message WM_... abfangen ???
Du kannst auch (meintest du das mit Hooks ?) die WndProc der Toolbar umbiegen:
Delphi-Quellcode:
So in etwa - dann kriegst du alle Nachrichten, die die Toolbar bekommt ... ;)
private
{ Private-Deklarationen } OldProgressWndProc: TWndMethod; procedure ProgressWndProc(var Msg: TMessage); ... procedure TForm1.FormCreate(Sender: TObject); begin OldProgressWndProc := ToolBar1.WindowProc; ToolBar1.WindowProc := ProgressWndProc; end; procedure TForm1.ProgressWndProc(var Msg: TMessage); begin // Hier Messages abfangen bevor die Toolbar reagieren kann OldProgressWndProc (Msg); // Hier Messages abfangen nachdem die Toolbar reagiert hat end; |
Re: Windows-Message WM_... abfangen ???
danke, das funktioniert schonmal gut. ich fang jetzt die botschaften vorher ab.
allerdings scheint das Mainmenu bzw. die items des Mainmenüs die botschaften immer noch abzufangen.
Delphi-Quellcode:
gibt es ja leider nicht. hat noch jemand dafür ein lösung??? denn dann sollte mein problem gelöst sein!!!
Mainmenu1.WindowProc:=ProgressWndProc;
|
Re: Windows-Message WM_... abfangen ???
mmhhh. ich hab mal mit winspector gekuckt, und wenn das mainmenü in der toolbar aufpoppt und ich mit der rechten maustaste auf ein item klicke, wird keine Botschaft gesendet! weder ein rbuttondown noch ein menurbuttonup!!!
Was ist den da los? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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