![]() |
PopupMenü suchen...finden...ändern...reagieren
Hallo Leute,
bevor mir jemand vorwirft, dass ich die gleiche Frage bereits 2007 gepostet habe... ja habe ich. :stupid: 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 :wink:) ) 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 :? :pale: 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 :cyclops: Hat jemand einen Tipp? Danke schon mal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:31 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