显示多个项目的Windows上下文菜单

时间:2010-02-05 15:34:37

标签: c# contextmenu windows-shell windows-explorer

我有一个列出文件的应用程序,我允许用户右键单击一个文件,我的应用程序显示所选文件的Windows上下文菜单。

我使用SHParseDisplayName获取文件名的pidl。然后我绑定到父对象:

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

拥有父母后,我可以构建上下文菜单:

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

这适用于1个项目或具有相同父项的项目,但如何显示具有不同父项的项目的上下文菜单?

1 个答案:

答案 0 :(得分:1)

为了将来参考,显然您可以使用CDefFolderMenu_Create2为多个shell项创建上下文菜单。你可以在这里找到一些很好的信息:

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