Thema: Delphi Hook / Popupmenu

Einzelnen Beitrag anzeigen

Benutzerbild von c113plpbr
c113plpbr

Registriert seit: 18. Nov 2003
Ort: localhost
674 Beiträge
 
Delphi 2005 Professional
 
#2

Re: Hook / Popupmenu

  Alt 5. Aug 2007, 17:43
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
Philipp
There is never enough time to do all the nothing you want.
*HABENWILL*
  Mit Zitat antworten Zitat