我有一个列出文件的应用程序,我允许用户右键单击一个文件,我的应用程序显示所选文件的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个项目或具有相同父级的项目,这非常有效,但是如何为具有不同父级的项目显示上下文菜单?