【问题标题】:Showing a Windows context menu for multiple items显示多个项目的 Windows 上下文菜单
【发布时间】:2010-02-05 15:34:37
【问题描述】:

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

【问题讨论】:

  • 以前有没有人尝试过这样做?只要项目共享同一个父对象,我就可以做到,但是如何调用具有不同父对象的菜单?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多