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