AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Messages in WndProc empfangen

Ein Thema von Viktorii · begonnen am 9. Jul 2009 · letzter Beitrag vom 10. Jul 2009
Antwort Antwort
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#1

Messages in WndProc empfangen

  Alt 9. Jul 2009, 10:55
Hallo Forum.

Ich bekomme von einer anderen Anwendung Messages in folgender Art geschickt:

  PostMessage (HWND_BROADCAST, WM_MY_MESSAGE, Param1, Param2); Nun habe ich nach Recherche herausgefunden, dass ich zum empfangen eine Funktion hooken muss:

Delphi-Quellcode:
  ...
  ...
  function AppHookFunc(var Message: TMessage): Boolean;
  ...
  ...
  Application.HookMainWindow(AppHookFunc);
Wieso muss ich das machen und kann die Messages nicht in der WndProc empfangen?

Vielen Dank
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Messages in WndProc empfangen

  Alt 9. Jul 2009, 10:58
1. Broadcast sendet nur an die TopLevel in Windows. Dein Hauptformular sollte diese trotzdem auch bekommen.
2. Anstatt Hook MainForm solltest du sonst eher die WndProc der Hauptform nutzen oder alternativ Application.OnMessage Handler verwenden.
3. Warum WndProc? Wenn es nur um die eine Message geht kannst du einen direkten Messagehandler definieren.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#3

Re: Messages in WndProc empfangen

  Alt 9. Jul 2009, 11:12
Zitat von Muetze1:
1. Broadcast sendet nur an die TopLevel in Windows. Dein Hauptformular sollte diese trotzdem auch bekommen.
Bedeutet das, dass meine WndProc des Hauptfensters diese Nachrichten empfangen sollte?

Zitat von Muetze1:
2. Anstatt Hook MainForm solltest du sonst eher die WndProc der Hauptform nutzen oder alternativ Application.OnMessage Handler verwenden.
Genau das möchte ich ja. Ich habe die WndProc überschrieben um dort die Messages zu empfangen. Nur leider scheinen sie dort nich anzukommen... Application.OnMessage werde ich mir mal anschauen...

Zitat von Muetze1:
3. Warum WndProc? Wenn es nur um die eine Message geht kannst du einen direkten Messagehandler definieren.
Es geht um das Empfangen von mehreren Messages. Allerdings nur eine Message von einer anderen Anwendung. Interessanterweise kann ich appliktionsinterne (an die Hauptform gesendete) Messages in der WndProc empfangen und die gebroadcasteten anscheinend nicht. Was genau bedeutet einen direkten Messagehandler? Über Application.OnMessage?
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#4

Re: Messages in WndProc empfangen

  Alt 10. Jul 2009, 12:23
ich pushe mal
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: Messages in WndProc empfangen

  Alt 10. Jul 2009, 13:36
Applikationsübergreifende Nachrichten im Stil von HWND_BROADCAST müssen im System mit MSDN-Library durchsuchenRegisterWindowMessage angemeldet werden.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#6

Re: Messages in WndProc empfangen

  Alt 10. Jul 2009, 13:54
Zitat von Sprint:
Applikationsübergreifende Nachrichten im Stil von HWND_BROADCAST müssen im System mit MSDN-Library durchsuchenRegisterWindowMessage angemeldet werden.
Ja, das habe ich schon gemacht....
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Messages in WndProc empfangen

  Alt 10. Jul 2009, 14:17
Zitat von Viktorii:
Bedeutet das, dass meine WndProc des Hauptfensters diese Nachrichten empfangen sollte?
Ja, ganz genau.

Zitat von Viktorii:
Zitat von Muetze1:
3. Warum WndProc? Wenn es nur um die eine Message geht kannst du einen direkten Messagehandler definieren.
Es geht um das Empfangen von mehreren Messages. Allerdings nur eine Message von einer anderen Anwendung. Interessanterweise kann ich appliktionsinterne (an die Hauptform gesendete) Messages in der WndProc empfangen und die gebroadcasteten anscheinend nicht. Was genau bedeutet einen direkten Messagehandler? Über Application.OnMessage?
Nein, ich meinte direkte Message Handler Methoden, z.B.
Delphi-Quellcode:
...
  private
    procedure WMMyMessage(var Message: TMessage) message WMMYMESSAGE;
...
Hallo sprint, schön dich mal wieder zu lesen!
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#8

Re: Messages in WndProc empfangen

  Alt 10. Jul 2009, 16:12
Zitat von Viktorii:
Zitat von Sprint:
Applikationsübergreifende Nachrichten im Stil von HWND_BROADCAST müssen im System mit MSDN-Library durchsuchenRegisterWindowMessage angemeldet werden.
Ja, das habe ich schon gemacht....
Sender und Empfänger müssen RegisterWindowMessage benutzen. Wenn du das gemacht hast, dann liegt der Fehler im Quellcode.


Zitat von Muetze1:
Hallo sprint, schön dich mal wieder zu lesen!
Hallo Thomas,

auch nach mehrjähriger Abwesenheit, sind mir deine Beiträge die liebsten.
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf