定制 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
  • 402

非常不错的webbrowser控件教程

http://www.cctry.com/thread-262528-1-1.html 大家好,欢迎大家来到VC驿站。前段时间陆续给大家更新了三套VC实战Http之Post方面的教程: ...
  • net_syc
  • net_syc
  • 2017年02月15日 17:26
  • 836

利用WebBrowser控件实现百度自动搜索

更多精彩内容,请见:http://www.16boke.com (1)新建一个MFC对话框项目 (2)对话框中添加WebBrower控件,添加方法:点击菜单栏工具->选择工具箱项->在弹出的选择工具箱...
  • one_in_one
  • one_in_one
  • 2014年05月20日 16:02
  • 11627

MFC调用WebBrowser控件直接编写javascript代码及其他WebBrowser相关技巧

在mfc操作网页的过程中,使用ActiveX控件
  • oHanTanYanYing
  • oHanTanYanYing
  • 2014年04月14日 23:34
  • 2353

WebBrowser 控件-说明

WebBrowser 控件-说明 很多地方还是空白,我还不知道用法。望各位赐教,谢谢  这是我自己编制浏览器时的资料,供各位参考。  控件文件:system32/shdocvw.oca  s...
  • liuyi820729
  • liuyi820729
  • 2013年12月06日 13:05
  • 1799

c#中WebBrowser控件的使用方法

首先先来简单介绍一下webbrowser控件,这个控件是可以实现在form窗体中添加网页内容的。如图,我在form中加入了百度api,(百度地图api调用博客里有讲) 使用这个控件其实很简单 (1)第...
  • gshengod
  • gshengod
  • 2013年07月29日 16:03
  • 11623

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

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

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

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

WPF中WebBrowser的使用方法及分析

基础知识WebBrowser类 承载并在HTML文档间导航。在WPF托管代码和HTML脚本间启用互操作性。 WebBrowser.Navigate方法(Uri) 异步导航到位于指定Uri处的文档...
  • wangshubo1989
  • wangshubo1989
  • 2015年08月07日 15:51
  • 22106

WebBrowser控件默认使用IE9,IE10的方法

WebBrowser控件默认使用IE9,IE10的方法 最近为了抓取淘宝的成交数据,用C#的WebBrowser控件开发了一个简单的程序. 发现WebBrowser控件默认使用的版本...
  • chenlei_525
  • chenlei_525
  • 2013年05月28日 14:02
  • 2091
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:定制 WebBrowser 控件
举报原因:
原因补充:

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