Internet Explorer 编程简述(六)自定义浏览器上下文菜单

本文介绍了如何自定义Internet Explorer和WebBrowser的上下文菜单,包括通过注册表添加简单菜单项,以及使用IDocHostUIHandler接口实现完全自定义菜单。通过拦截ShowContextMenu方法和修改菜单状态,可以实现对标准菜单的扩展和调整。
摘要由CSDN通过智能技术生成

关键字:WebBrowser, Internet Explorer, Custom Context Menu, ShowContextMenu, IDocHostUIHandler

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方法。

HRESULTIDocHostUIHandler::ShowContextMenu(
    DWORD dwID,
    POINT *ppt,
    IUnknown *pcmdtReserved,
    IDispatch *pdispReserved
);

dwID参数的意义与Contexts的组合类似;ppt为菜单的弹出点屏幕坐标;pcmdtReserved接口指向IOleCommandTarget接口,可用于检测网页对象的状态和执行命令等操作。pdispReserved在IE5以上版本中指向的是网页对象的IDispatch接口

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值