2010-02-05 10 views
1

J'ai une application qui répertorie les fichiers et j'autorise l'utilisateur à cliquer avec le bouton droit sur un fichier et mon application affiche le menu contextuel Windows pour le fichier sélectionné.Affichage d'un menu contextuel Windows pour plusieurs éléments

J'utilise SHParseDisplayName pour obtenir un pidl pour un nom de fichier. Ensuite, je lie à l'objet parent:

IntPtr pidlLast = IntPtr.Zero; 
SHBindToParent(pidl, typeof(IShellFolder).GUID, out oShellFolder, out pidlLast); 

après avoir le parent que je peux obtenir de construire le menu contextuel:

IntPtr result = IntPtr.Zero; 
IShellFolder shellFolder = (IShellFolder)oShellFolder; 
shellFolder.GetUIObjectOf(windowHandle, (uint)pidls.Count, 
     pidls.ToArray(), typeof(IContextMenu).GUID, 0, out result); 

Cela fonctionne parfaitement pour 1 article ou des articles avec le même parent, mais Comment puis-je afficher un menu contextuel pour les articles avec des parents différents?

+0

Quelqu'un at-il essayé tous de le faire avant? Je peux le faire aussi longtemps que les éléments partagent le même parent, mais comment invoquez-vous un menu avec différents objets parents? –

Répondre

1

Pour référence future, vous pouvez apparemment utiliser CDefFolderMenu_Create2 pour créer un menu contextuel pour plusieurs éléments de l'environnement. Vous trouverez d'excellentes informations ici:

http://www.zabkat.com/blog/08Jul07.htm

Questions connexes