Entwickler-Ecke

Windows API - Explorer ContextMenu in eigenes PopUp implementieren


Rylon - So 20.08.06 04:45
Titel: Explorer ContextMenu in eigenes PopUp implementieren
Hallo DF,

Ich habe nach Suchen in DP und DF eine Funktion gefunden, die mir ein Contextmenu eines bestimmten Files öffnen -> Ich würde nun gerne kein eigenständiges Menü öffnen, sondern die Einträge des Contextmenues in meins übernehmen...
im prinziep ein normales popup (is tbx geskinnt - also nicht normal - tut aber nix zur Sache)

Jemand eine Idee?

Grüße Rylon t.H.D.

PS: Danke im Vorraus


0xCC - So 20.08.06 05:10

tip: guck mal in der registry


Rylon - So 20.08.06 05:43
Titel: ???
???

-> Noch ein Tip bitte: WO????


Grüße Rylon t.H.D.


Flocke - So 20.08.06 18:30

Wenn du exakt dasselbe Kontextmenü wie der Explorer haben möchtest, dann solltest du dir die folgenden Interfaces / Funktionen ansehen:

Ein Beispiel findest du in den Delphi-Demos unter <Delphi-Verzeichnis>\Demos\DelphiWin32\ShellControls\ShellCtrls.pas in der Funktion InvokeContextMenu.


Rylon - So 20.08.06 22:10
Titel: Ja
Ja, das kenne ich -> leider kann ich mit dem invoke nur eine Kontextmenü aufpoppen lassen, nicht die items (mit funktionen) übernehmen. ->

d.h. ich will ein menü (popup) an den das KontextMenü angehängt wird. - Dazu würde ich gerne die Items und die verknüpften Ereignisse auslesen.

Grüße Rylon t.H.D.


Flocke - Mo 21.08.06 00:09

Also mit IContextMenu.QueryContextMenu bekommst du ein ganz normales Windows-Menühandle. Dessen Einträge müsstest du mit den normalen API-Funktionen (GetMenuItemCount, GetMenuItemInfo) auslesen können. Ansonsten kannst du dieses Menü ja als Untermenü an deines anhängen.


0xCC - Mo 21.08.06 00:11
Titel: Re: ???
user profile iconRylon hat folgendes geschrieben:
-> Noch ein Tip bitte: WO????

unter HKEY_CLASSES_ROOT
* steht für alle einträge, dann natürlich noch die jeweiligen settings per dateiendung.
ne kleine google recherche dürfte sicher einiges zu tage fördern