Hallo Leute,
bevor mir jemand vorwirft, dass ich die gleiche Frage bereits 2007 gepostet habe... ja habe ich.
Aber damals bin ich auch zu keinem Ergebnis gekommen, deshalb versuche ich es erneut.
Ich möchte das Popupmenü(Kontextmenü) einer fremden Anwendung erweitern.
Es handelt sich um eine
MDI-Anwendung.(konkrekt NATURAL Studio, Entwicklungsumgebung für die Sprache NATURAL(wird wohl keiner kennen
) )
Winspector zeigt mir folgende Fensterhirachie:
1. NIDEWindowClass
2. PgmEdtMDIWin
3. PgmEditGroup
4. PgmEdtEditWin
Ich bin schon soweit, dass ich hier die Windows-Botschaften abfangen muss. Das ganze mache
ich mit einem globalen Hook.
Das tut schon mal. Ich komme aber nicht ganz mit der Reihenfolge der Nachrichten zurecht.
Drücke ich die rechte Maustaste bekommt das Fenster NIDEWindowClass die Nachricht WM_INITMENUPOPUP.
Danach bekommt PgmEdtMDIWin die Nachricht WM_CONTEXTMENU
Laut
msdn steht
WM_INITMENUPOPUP wParam das
Handle des Menüs.
WM_CONTEXTMENU wParam das
Handle des Fensters in dem die rechte Maustaste gedrückt wurde.
Ich bekomme also zuerst gesagt, dass ein Popup erscheinen wird und dann erst welches Fenster der "Auslöser"
war. Umgekehrt wäre es mir lieber.
Das Problem ist, dass es unterschiedliche Kontextmenüs geben kann. Je nachdem welchen Inhalt der Programeditor hat,
ändert sich das PopupMenü.
Ich möchte aber nur auf bestimmte Kontextmenüs reagieren.
Wie mache ich das?
Zusätzlich stellt sich dann die Herausforderung, damit ich das Kontextmenü um Einträge erweitern kann, muss ich erst an den
Editorinhalt kommen(und analysieren), welcher in PgmEdtEditWin steht
Im Prinzip müsste es so laufen:
1. Hook bekommt die Nachricht: ein Kontextmenü soll geöffnet werden
2. Ist es das Menü um das es mir geht, wenn Nein-> Exit
3. Ermitteln des Editorinhaltes
4. Menüeinträge anhängen
und später dann noch auf die Auswahl dieser Einträge reagieren... aber das erst später
Hat jemand einen Tipp?
Danke schon mal.