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

在C WinForms应用程序中显示Windows(文件/目录)上下文菜单

  •  7
  • Axarydax  · 技术社区  · 14 年前

    我正在尝试在WinForms应用程序中显示标准的文件/目录上下文菜单-我想让用户能够像在资源管理器中那样处理我的应用程序中的文件。

    应该有两种选择

    • 用一些系统调用弹出上下文菜单
    • 从系统上下文菜单中读取所有内容并将其插入到我的上下文菜单中

    你能给我指出正确的方向吗?谢谢

    2 回复  |  直到 6 年前
        1
  •  8
  •   Grokys    14 年前

    我已经写了一个.NET库来允许这样做。你可以在这里找到它:

    http://gong-shell.sourceforge.net/

    您要查找的类是该库中的ShellContextMenu。

        2
  •  4
  •   Kevin McCormick    13 年前

    这可能是非常具有挑战性的,因此我提出了两个解决方案:

    1. (easy) 使用Groky建议的库, do what is done in foldersizes The explorer context menu is shown as a sub-context menu.当“Explorer operation”(浏览器操作)项悬停时,您可以通过显示“Explorer”(浏览器)菜单来模拟此操作。

    2. (hard) 如果这不够,您可以从shell获取菜单项, and create your own menu.此codeproject文章( http://www.codeproject.com/kb/misctrl/filebrowser.aspx )将通过枚举和调用特定shell对象的shell命令的过程,以及如何枚举子菜单。

  • (容易) 使用格罗基建议的图书馆, 做在做的事 FolderSizes . 资源管理器上下文菜单显示为子上下文菜单。当“Explorer operation”(资源管理器操作)项悬停时,可以通过显示资源管理器菜单来模拟此情况。

    enter image description here

  • (硬) 如果这还不够,你可以 从shell中获取菜单项, 并创建自己的菜单。此代码项目文章( http://www.codeproject.com/KB/miscctrl/FileBrowser.aspx )完成特定shell对象的枚举和调用shell命令的过程,以及如何枚举子菜单。