以下摘自:http://www.vcsky.net/internet/contmenu.htm
在应用中使用注册表扩充IE上下文菜单作者:sriram         翻译:姬先锋所给出的示例代码是使用Visual c++ 5.0在Windows95下编译的。     Internet Explorer 4.0是使用OLE Activex控制,和Active Document接口连接部件(components)的。我在这里简单地讨论一下Internet Explorer的体系结构。大体上,Internet Explorer只是一个小程序,它在维护“收藏”和维护“历史”等过程中使用了IE4.0部件。它的执行直接调用SHDOCVW.DLL,而SHDOCVW.DLL仅仅是网络浏览器控制。然后,SHDOCVW.DLL调用MSHTML.DLL。实现webbrowser控制要比实现MSHTML.DLL简单。    MSHTML.DLL实行Internet Explorer 4.0里的HTML分析和翻译,而且使HTML文件通过动态的html 对象模型(Object Model)展现出来。这个DLL作为宿主调用脚本引擎、Java(一种计算机语言)虚拟机,ActiveX控制,Plug_Ins插件和也许在加载的HTML文件中被引用的其他的部件。这个DLL实现Active Docutment Server 接口,该接口允许用户使用标准的com接口调用这个DLL。     但是,如果我们调用MSHTML.DLL,我们应该实现已经在webbrowser控制里的功能特征。现在言归正传,继续解释我们这篇文章的话题。如果有人想研究关于IE的体系结构和它如何工作的更多的东西,那么请安装在http://www.microsoft.com中可以用于下载的INETSDK,或者从Microsoft Developper Network(MSDN)CD Pack安装它。     如果我们写一个使用WebBrowser控制的应用程序,学习使用WebBrowser控制的方法可以参考Daniel Harth 的文章,在http//www.codeguru.com/internet/webbrowser_control.shtml。如果我们右键单击窗口,webbrowser控制将显示IE的上下文菜单。但是如果我们想修改它,我们应该做什么?回答是进入Windows注册表,加新菜单项目。好象有点疯狂!! 等一下,我解释一下,其实,我们能够用编程的方法控制正在浏览的网页的上下文菜单。这个我将以后再进行更新。     菜单项能通过在注册表中设置入口,并和你想要执行的URL关联,从而被加入已经存在WebBrowser的的上下文菜单。为了把附加的项目加到标准的WebBrowser上下文菜单上,打开下列注册键。如果你没有如下注册键,不要惊慌,只要按如下形式建立即可。 HKEY_CURRENT_USER
    Software
        Microsoft
            Internet Explorer
                MenuExt    在这注册键下面建立另一个包括在菜单中被显示的正文的注册键。 这个注册键的缺省值将包括当用户选这菜单项目的时候,将被执行的URL。注册键的名字可以包括使得跟着‘&’的字符标记为下划线的‘&’字符在内。 URL将装入隐藏起来的HTML对话框的的内部,全部脚本将被实行,并且,对话将被关上。隐藏起来的HTML对话框的external.menuArguments属性包括上下文菜单项目将在其上被执行的窗口的窗口对象。 下列注册入口将把带题目为"HOME"的项目加到WebBrowser上下文菜单上,并将执行URL " http://www.vcsky.net " HKEY_CURRENT_USER
    Software
        Microsoft
            Internet Explorer
                MenuExt
                    Home = http://www.vcsky.net"
    示例应用引用WebBrowser控制。只要在WINDOWS注册表中添加这些注册入口,然后运行这个简单示例。在应用程序的窗口中右键点击,您将看到上下文菜单中的“HOME”菜单会显示出来。