如何用VB在资源管理器的快捷菜单上添加自己的选项
编号:QA000823
建立日期: 1999年4月17日 最后修改日期:1999年8月8日
所属类别:
唐斌:
象WINZIP那样,在某个文件上单击鼠标右键,在弹出的系统菜单中会根据当前的文件出现ADD ZIP等菜单项,如何用VB来实现这项功能?请指教
回答:
对于简单的菜单应用实际并不需要编程,只需要修改注册表就可以实现。比如安装了PowerToy后,它会在你选择一个目录时增加一项Command Prompt Here,实际上只是在HKEY_CLASSES_ROOT\Directory\shell\DosHere\command下增加了一行:
C:\WIN95\command.com /k cd "%1"
这样Windows会把选择的文件或目录以命令行参数的形式传递给你的程序。参考QA000595 "如何在VB中加入命令行参数"。
不过如果你想制作复杂的应用就需要进行Shell Extension编程,具体地说是IContextMenu外壳扩展。你需要建立一个ActiveX DLL,在这个DLL中要实现IContextMenu(或IContextMenu2,两者的区别在于IContextMenu2允许菜单上包括图形)接口。实现了这个接口,你还需要修改相应的注册表项。这样,当用户选择一个文件后,系统会调用你的DLL,询问你是否支持该文件。如果支持,你就利用系统传递给你的菜单句柄,在这个菜单上加一个菜单项。如果用户选择了你的菜单项,系统会再次通知你,你就开始执行对该文件的操作。在VB中实现整个过程可以参考微软的例子程序
ICtxMenu.exe。
在Delphi和VC++中也有类似的示例程序。Delphi的例子在Borland\Delphi4\Demos\Activex\Shellext目录。
此问题由李海回答。
| |
|
|
| |
|
|