Shell Kontextmenüs per Interface IContextMenu aufrufen

    • VB.NET
    • .NET (FX) 4.5–4.8

      Shell Kontextmenüs per Interface IContextMenu aufrufen

      Hi@all

      Irgendwann kommt man an einem Punkt, da möchte man sowas wie eine Exploreransicht in einem Tree- oder ListView darstellen und fragt sich, wie komme ich an die Kontextmenüs des Explorer. Dafür stellt Windows das Interface IContextMenu bereit. Dieses Beispiel zeigt wie man diese Kontextmenüs aufruft. Ich hatte mal in einem anderen Thread erwähnt, dass man dafür nur ein zwei Interfaces und ein paar APIs benötigt. Ok, ich hab ein wenig untertrieben. Ist dann doch ein bissel mehr. ;) Als kleine spielerei zeig ich auch noch wie man diese Kontextmenüs durch eigene MenüItems erweitern kann. Grob gesagt, man kann auf diese Kontextmenüs alle möglichen Menü-APIs anwenden (zB auch um weitere Untermenüs hinzuzufügen usw) oder das Kontextmenü zu manipulieren.

      Wie immer: keine extra Verweise oder Fremdpakete. Wichtig: Löschen aus dem Kontextmenü auswählen bedeutet auch löschen! Ich übernehme keine Haftung wenn Ihr darüber Dateien/Ordner auf Eurer Platte löscht oder Laufwerke formatiert oder sonstiges auswählt das irgendwelche Aktionen ausführt! Das ganze funktioniert so wie im Explorer auch. Gefahrlos testen könnt Ihr das ganze mit "Öffnen", "Öffnen mit ->" Bearbeiten", "Drucken", "Eigenschaften". Was man evtl. noch Gefahrlos testen könnte wäre: Klickt ihr in diesem Beispiel auf das Kontextmenü, zB bei einer/mehreren Datei(en)/Ordner, auf "Kopieren" und geht dann in Eurem Explorer und wählt dort im Kontextmenü irgendwo "Einfügen". Alles andere auf eigene Gefahr!

      Edit: Total vergessen zu sagen, spielt mal ein wenig mit den Flags CMF_FLAGS und CMIC_MASK_FLAGS. Das Kontextmenü hat dann evtl. ein paar Items mehr oder auch weniger.
      Bilder
      • IContextMenu.png

        134,31 kB, 454×519, 11 mal angesehen
      Dateien
      Mfg -Franky-

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „-Franky-“ ()