怎么样将菜单集成到 windows 中?
就象 winRar 这类软件一样。比如安装了 winrar 后,在资源管理器中文件或目录上点击鼠标右键,弹出的 windows 菜单会多出几项:压缩到文件... 压缩到 ... 并邮寄 等等这相当于两个问题:1)向 windows 外壳添加菜单 2)通过菜单得到文件名或目录名用 VB 怎么实现?

解决方案 »

  1.   

    Windows资源管理器的右键菜单(ContextMenu)功能十分强大,如何将它加入到自己的文件管理器程序中呢?下面的代码使用Windows的接口实现了这样的功能。并且可以在右键菜单中加入自己的菜单项。http://www.applevb.com/sourcecode/contextmenu_inpro.zip
      

  2.   

    你打开“文件夹选项”-文件类型,
    选择一个文件类型比如HTML文件,
    点击“高级”-“新建”,
    即可新建一个选项:
    “操作”设为“用写字板打开-Test”,然后“用于操作的应用程序”选择“%SystemRoot%\system32\NOTEPAD.EXE %1”
    (注意最后的 %1,表示将这个文件作为第一个命令行参数)
    然后注销一下,你可以看到HTML文件的右键菜单里面多了这一项“用写字板打开-Test”。选择它就会用记事本打开HTML文件。
    (其实就是在注册表 HKCR-htmlfile-shell下面添加了一项。
    你自己修改注册表的这一项能达到同样效果。)
      

  3.   

    冰儿马甲的程序是在自己的程序中添加右键
    跟楼主要求不尽相同。
    还有,HKCR中有一些通用项,比如Directory项就是对所有文件夹起作用的
    还有一个对所有文件类型起作用的,可惜我一时找不到了
      

  4.   

    看这个代码:
    利用VB实现Windows外壳扩展中的上下文菜单,参见压缩包中的Readme.txt文件。http://www.applevb.com/sourcecode/vbcontextmenu.zip实现了IContextMenu接口
      

  5.   

    看来楼主对VB实现shell扩展比较感兴趣,可以参考一下这个网站:http://www.mvps.org/emorcillo/en/index.shtml
      

  6.   

    谢谢楼上各位的热心。
    TechnoFantasy(冰儿马甲www.applevb.com) 提供的代码偶看了,一时还没明白怎么实现的,看来要仔细研究研究。
      

  7.   

    其实并不复杂,Shell扩展基本就是实现编写组件微软规定的接口,例如这个帖子的右键菜单就要实现IContextMenu接口,然后将组件注册并且在规定的地方修改注册表就可以了。
      

  8.   

    查了一下资料,终有所获。
    其实我不需要实现 IContextMenu 接口,因为我只是想通过菜单得到文件名或目录名,不需要判断该文件是否能被支持,所以不需要生成 COM 组件。
    直接用API修改这两个注册表项: [HKEY_CLASSES_ROOT\*\shell\] 、[HKEY_CLASSES_ROOT\Directory\shell] 就实现了。谢谢大家的热心回复。结贴!