代码之家  ›  专栏  ›  技术社区  ›  Apocalisp

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

  •  1
  • Apocalisp  · 技术社区  · 15 年前

    我有一个列出文件的应用程序,我允许用户右键单击一个文件,我的应用程序显示所选文件的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 回复  |  直到 10 年前
        1
  •  1
  •   Apocalisp    14 年前

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

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