怎么样将菜单集成到 windows 中?
就象 winRar 这类软件一样。比如安装了 winrar 后,在资源管理器中文件或目录上点击鼠标右键,弹出的 windows 菜单会多出几项:压缩到文件... 压缩到 ... 并邮寄 等等这相当于两个问题:1)向 windows 外壳添加菜单 2)通过菜单得到文件名或目录名用 VB 怎么实现?
就象 winRar 这类软件一样。比如安装了 winrar 后,在资源管理器中文件或目录上点击鼠标右键,弹出的 windows 菜单会多出几项:压缩到文件... 压缩到 ... 并邮寄 等等这相当于两个问题:1)向 windows 外壳添加菜单 2)通过菜单得到文件名或目录名用 VB 怎么实现?
选择一个文件类型比如HTML文件,
点击“高级”-“新建”,
即可新建一个选项:
“操作”设为“用写字板打开-Test”,然后“用于操作的应用程序”选择“%SystemRoot%\system32\NOTEPAD.EXE %1”
(注意最后的 %1,表示将这个文件作为第一个命令行参数)
然后注销一下,你可以看到HTML文件的右键菜单里面多了这一项“用写字板打开-Test”。选择它就会用记事本打开HTML文件。
(其实就是在注册表 HKCR-htmlfile-shell下面添加了一项。
你自己修改注册表的这一项能达到同样效果。)
跟楼主要求不尽相同。
还有,HKCR中有一些通用项,比如Directory项就是对所有文件夹起作用的
还有一个对所有文件类型起作用的,可惜我一时找不到了
利用VB实现Windows外壳扩展中的上下文菜单,参见压缩包中的Readme.txt文件。http://www.applevb.com/sourcecode/vbcontextmenu.zip实现了IContextMenu接口
TechnoFantasy(冰儿马甲www.applevb.com) 提供的代码偶看了,一时还没明白怎么实现的,看来要仔细研究研究。
其实我不需要实现 IContextMenu 接口,因为我只是想通过菜单得到文件名或目录名,不需要判断该文件是否能被支持,所以不需要生成 COM 组件。
直接用API修改这两个注册表项: [HKEY_CLASSES_ROOT\*\shell\] 、[HKEY_CLASSES_ROOT\Directory\shell] 就实现了。谢谢大家的热心回复。结贴!