在系统桌面或资源管理器的文件夹的空白区域,按下鼠标右键,会出来一个弹出菜单,其中有一项是“新建”,
其下子菜单包括:新建 - 文件夹
       快捷方式
       BMP图像
       文本文件
       Winrar压缩文件
       ...
我现在已经能通过IContextMenu,在程序里面弹出指定文件或文件夹的右键菜单,
但是怎么弹出类似桌面空白区的右键菜单? 或者取到“新建”下面的二级菜单内容?谢谢!
       

解决方案 »

  1.   

    楼上两位没理解我的意思。我是要在我的程序里面,弹出一个新建文件的菜单,而且可以新建的文件项,与系统桌面一样。
    比如,如果用户电脑上安装了rar压缩软件,那么桌面上右键菜单就有"新建压缩文件"一项,我的程序里面也要有。
      

  2.   

    首先你的软件新建文件应该在注册表中有个文件类型,然后需要在注册表的HKEY_CLASSES\ROOT\.***(你的文件类型)下创建新乡ShellNew(相当于右键新建指令),赋串值,如(NullFile)和键值(空)。这样在单击右键-新建就应该看到了。如果需要系统自动识别你的软件,那么在登记时应该对用户注册表做相应修改。
      

  3.   

    我没有描述清楚。我的目的,不是把我的软件定义的文件类型,加到系统右键菜单“新建”的二级菜单下。我的软件没有自己的文件类型,更不需要用户新建这种文件。
    用户在桌面空白区域右键点击,会弹出一个菜单,里面有一项“新建”,下面有很多的系统安装的文件类型可供选择。我的目的只是在我的程序的窗口上,右键也弹出同样的菜单(主要难点是获取“新建”下面的文件类型),能做到吗?通过枚举HKEY_CLASSES\ROOT\.***,看看其下有没有ShellNew子键,如果有的话,就加到“新建”的二级菜单下,这种方法能够得到“新建”下面的所有文件类型。但我感觉麻烦,性能可能也较低,所以想看看Windows有没有提供这样的接口?谢谢各位回复!
      

  4.   

    HKEY_CURRENT_USER,Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Discardable\\PostSetup\\ShellNew找到文件类型
    然后HKEY_CLASSES_ROOT这里根据文件类型找到新建文件,复制。我的就是这样实现的