1、概述 Internet Explorer提供了非常开发的接口,使开发人员不仅可以把其浏览器核心嵌入应用程序,还可以通过各种接口以实现更深层的控制。本文就将介绍对浏览器进行高级控制的话题之一——自定义上下文菜单。 2、最简单的情况 自定义的IE及WebBrowser的上下文菜单,最简单的方式就是在注册表的HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt下添加自定义的键值,步骤如下: 1)添加一个新的键,其名称即为将来显示在上下文菜单中的菜单项名称,如: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\&Google Search 2)将新增的键的默认值设置为一个包含脚本的网页的URL(或文件路径全名),该网页中的脚本将在用户点击上下文菜单中的“Google Search”后被浏览器执行。
3)在新增的键下还可以新建一个二进制值Contexts,用以指定我们新增的菜单项针对特定的网页对象是否出现,其取值可以是如下值的组合(逻辑或) Context Value Default 0x1 Images 0x2 Controls 0x4 Tables 0x8 Text selection 0x10 Anchor 0x20 4)还可以建立一个DWORD类型的Flags项并将其值设置为0x01,这将使得前述脚本在一个模态窗口中执行,就好像是通过window.showModalDialog调用的,但不同的是在脚本中仍然可以访问window对象。 5)实例脚本如下:
| <SCRIPT LANGUAGE="JavaScript" defer> open(external.menuArguments.location.href); </script> |
通过修改注册表自定义菜单的方法适用于Internet Explorer和WebBrowser,也具有良好的扩展性。但我们如果希望执行的是不仅仅是脚本,二是自己的程序中代码,这种方法就不适用了。 3、使用完全自定义的菜单 1)IDocHostUIhandler接口提供了一个ShowContextMenu方法,在需要显示上下文菜单之前,MSHTML引擎就会调用实现了IDocHostUIHandler接口的 宿主程序的ShowContextMenu方法。 系列文章:Internet Explorer编程简述(一) (二) (三) (四) (五) (六)
|