Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Main Menu Einträge Dritter auslesen

  Alt 1. Feb 2006, 07:55
Wenn im Programm XY das Hauptmenü geöffnet wird, dann werden bestimmte Nachrichten an das Fenster geschickt, dem der Menubar zugeordnet ist. Die WindowProc dieses Fensters verarbeitet dann diese Nachrichten und erzeugt dann beispielsweise die Hints für die einzelnen Menüeinträge. Wenn du die dich mit einem eigenen message handler in die WindowProc des Hauptfensters von XY einklinkst, dann könntest du diese Nachrichten auswerten, bevor du sie an den original message handler weiterreichst.

Mit FindWindow() kannst du dir das Handle h auf das Hauptfenster von XY besorgen. Mit GetWindowLong(h, GWL_WNDPROC) kannst du dir die Einsprungadresse des fremden message handlers holen und zwischenspeichern. Mit SetWindowLong() kannst du einen eigenen handler dazwischen schieben, aus dem du dann die Nachrichten an den zwischengespeicherten handler weiter reichst. Wenn du dein Programm zuerst beendest und das fremde handle noch existiert - was du mit IsWindow() prüfen kannst - dann musst du natürlich den original handler wieder einsetzen, damit das fremde Programm weiter funktioniert.

Soweit die Theorie. Ich hoffe es hilft dir. Viel Spaß beim Umsetzen.

marabu
  Mit Zitat antworten Zitat