Zitat von
golisan:
ich will in einer Anwendung das Popupmenü "abfangen" und verändern.
Nehmen wir z. Bsp. mal Notepad. Drücke ich die rechte Maustaste, erscheint das Popup mit Ausschneiden, Einfügen etc.
Wie komme ich an dieses Popup?
Also, es gibt da zwei praktikable Möglichkeiten (die mir bekannt sind):
Die erste, die ich dir empfehlen würde ist die SetWindowsHookEx-Funktion zu benutzen und damit einen Hook zu "installieren" (welchen typ von hook man dazu braucht steht in der
msdn). Dann musst du in der hook-callback-funktion einfach noch auf die WM_CONTEXTMENU-Message warten, dann weißt du, dass ein Kontextmenü aufgerufen wurde. Das kannst du dann nach belieben verändern.
Die andere Methode, die ich mal verwendet hab lief über Function-Hooking. Dazu habe ich auch ein Beispiel gepostet:
sit
Allerdings rate ich dir von dieser Methode ab, wenn es nicht unbedingt sein muss, da diese lange nicht so "sauber" ist wie die über SetWindowsHookEx.
Zitat von
golisan:
Ich habe bereits einen Hook, der mir "sagt", daß die rechte Maustaste gedrückt wurde, aber das Popup kommt ja erst danach
Das bringt als nicht wirklich was
Und die nächste spannende Frage wäre, wenn ich das Popupmenü nun um meine Einträge erweitert habe, wie bekomme ich mit, daß so ein Eintrag ausgwählt wurde?
Auch dafür lässt sich ein solcher Hook einsetzen, einfach auf die WM_COMMAND-Message (wird gesendet, wenn ein Menü-Eintrag angeklickt wurde) warten und dann schauen ob dein Eintrag ausgewählt wurde.
mfg,
Philipp