定制 WebBrowser 控件

原创 2004年08月19日 16:50:00

因为工作需要,这几天在寻找定制 WebBrowser 控件的方法。原来已经研究过一阵子,原理大概知道,
基本就是实现 IDocHostUIHandler 和 IDocHostShowUI 两个接口,IE 控件会在适当的时候调用这两个接口,
我只要按照帮助文档的说明设置不同的值就可以了。

挂接这两个接口接口到控件中去,有两种方法:
一种是通过 ICustomDoc 接口定制,代码如下:
 html0.Navigate2("about:blank");
 ICustomDoc o = html0.Document as ICustomDoc;
 o.SetUIHandler(this as IDocHostUIHandler);
 但是因为只有文档装入之后才可以取得Document的值,所以需要预先装入一个空文档,这里是about:blank。
 
第二种方法是完成 Active Document Host 所需要的所有接口
        , IOleClientSite
        , IOleInPlaceSite  
        , IOleDocumentSite
        //, IOleWindow        // IOleInPlaceSite 已经包含了该接口
        , IDocHostUIHandler
        , IDocHostShowUI

        // IOleInPlaceSite.GetWindowContext 调用需要以下两个接口
        , IOleInPlaceFrame
        //, IOleInPlaceUIWindow // IOleInPlaceFrame 已经实现了该接口

        // 接口 IOleClientSite.GetContainor 需要用到
        , IOleContainer   
       
挂接这些接口到控件中的代码如下:
 IOleObject o = html0.GetOcx() as IOleObject;
 o.SetClientSite(this as IOleClientSite);
一旦挂接成功之后,一般会调用如下几个函数
 IOleInPlaceSite GetWindow
 IDocHostUIHandler GetHostInfo
 IDocHostUIHandler GetOptionKeyPath
 IDocHostUIHandler GetHostInfo
 IDocHostUIHandler GetDropTarget
 IDocHostUIHandler UpdateUI
 IDocHostUIHandler ShowUI
 IDocHostUIHandler HideUI
 IDocHostUIHandler TranslateAccelerator
 IDocHostUIHandler TranslateUrl
 IDocHostUIHandler ShowContextMenu
 IDocHostShowUI IDocHostShowUI
 IOleClientSite GetContainer

另外还有一种方法,就是直接使用文档嵌入功能,嵌入 HTMLDocument 对象,这样可以省却使用 WebBrowser 控件。HtmlEditor 就是用的这种方法,可惜我没能做成。

在MFC应用中深入定制WebBrowser控件(转)

正如VC ++ 6.0的演示程序MFCIE所示,用应用程序向导创建一个具有Web导航能力的MFC应用可谓轻而易举。本文在此基础上,进一步讨论两个问题:资源自包含的实现,上下文菜单以及快捷键的完全控制。...
  • zhangtai8891
  • zhangtai8891
  • 2014-07-21 16:34:07
  • 414

在MFC应用中深入定制WebBrowser控件

正如VC ++ 6.0的演示程序MFCIE所示,用应用程序向导创建一个具有Web导航能力的MFC应用可谓轻而易举。本文在此基础上,进一步讨论两个问题:资源自包含的实现,上下文菜单以及快捷键的完全控制。...
  • momosp
  • momosp
  • 2014-09-21 16:02:33
  • 1097

WebBrowser控件拖拽的实现

 WebBrowser 作为群众喜闻乐见的插件, 一直以好用难写而臭名昭著. 其海量的接口忙的众多死程序员乐不思蜀. 前些天正好需要在WebBrowser中实现文件的拖拽, 遇到一些问题, 后来解决了...
  • norsd
  • norsd
  • 2008-09-01 04:17:00
  • 5838

用WebBrowser实现HTML界面的应用

这一篇将继续讨论在使用delphi进行普通应用程序开发的时候,WebBrowser的具体应用,主要是针对使用其进行HTML界面开发的,这也是一篇我在网上找到的资料,大家如要转载,请尊重原作者的知识产权...
  • u012043539
  • u012043539
  • 2014-07-02 14:28:44
  • 1945

Delphi WebBrowser控件的使用

Delphi WebBrowser控件的使用 WebBrowser控件属性: 1、Application       如果该对象有效,则返回掌管WebBrowser控件的应用程序实现...
  • ltqwby
  • ltqwby
  • 2015-02-10 16:40:13
  • 1732

VB Webbrowser控件详解

新加内容:提交表单form1: Private Sub Command1_Click() WebBrowser1.Document.Forms("form1").submit End Sub 将for...
  • jyh_jack
  • jyh_jack
  • 2008-02-15 13:14:00
  • 9556

关于Webbrowser针对网银控件显示不正常的一个解决思路。

1 假设你在开发一个基于ie的WebBrowser的控件,只是调用WebBrowser接口。 2 打开招行网银页面,https://pbsz.ebank.cmbchina.com/CmbBank_...
  • fengfengLoveFeng
  • fengfengLoveFeng
  • 2015-08-31 17:31:26
  • 1098

通过WebBrowser控件,实现IE浏览器菜单功能

WebBrowser控件,是IE浏览器的内置控件。顾名思义,这个控件我们可以看成是浏览器本身。本文对这个控件的主要参数和方法进行了说明和测试。...
  • u013589130
  • u013589130
  • 2015-05-05 00:24:11
  • 2198

WebBrowser无法显示招商银行密码输入控件的问题

之前就看到CSDN论坛上有人提问,自己写的程序中的WebBrowser打开招商银行的登录页面后(https://pbnj.ebank.cmbchina.com/CmbBank_GenShell/UI/...
  • CharlesSimonyi
  • CharlesSimonyi
  • 2014-06-13 13:53:45
  • 10803

利用vb的WebBrowser控件开发的网页浏览器

  • 2009年12月12日 22:51
  • 16.81MB
  • 下载
收藏助手
不良信息举报
您举报文章:定制 WebBrowser 控件
举报原因:
原因补充:

(最多只允许输入30个字)