如何对webbrowser和IE编程(一)

《Python入门到精通》webbrowser模块详解,Python webbrowser标准库,Python浏览器控制工具 webbrowser 是Python的内置库,提供了访问Web浏览器的接口 阅读详情
 

如何对webbrowserIE编程

一、

因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。

IE的体系

WebBrowser Host

首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webbrowser control的应用程序,可以是vb程序,也可以是vc或者任何其他语言的应用程序。应用程序必须是可容纳activex控件的容器。

Webbrowser control既是activex control也是activex document 的宿主。作为控件,它可以置于任何activex容器,作为文档容器,它针对特殊的类型,调用特殊类型注册的文档server以显示文档。如果你想显示一个.doc文档,webbrowser control装载windows word,,对于html文档,webbrowser装载名为mshtml的组件(如图所示)。针对不同的文档,你不需要开发不同的应用,仅仅是调用webbrowser control即可。

Shdocvw

Shdocvw.dll包含了webbrowser control ,控制webbrowser control (就像控制其他任何activex com 控件一样),提供浏览能力给上层宿主。请注意webbrowser control位于第二级中。甚至IE也不直接而是通过shdocw.dll来使用webbrowser control的。尽管shdocvw提供了大部分的浏览功能,但是并不提供IE窗口的呈现功能。尽管如此,shdocvw还是提供了简单创建web 应用程序的能力。之后章节会讲到如何将ie的高级特性加入到你的应用程序。

MSHTML

早期的mshtml具有读取显示html的功能。MSHTML实际上是一个active 文档服务器,但是却可以作为其他控件的容器(如图中所示的)。记得吗,你可以将activex控件置于html中,此时mshtml就是一个activex宿主,还可以控制其他的控件如vbscript 脚本引擎和javascript脚本引擎,java applet ,geszhong,各种插件别意外,plug-in都是按照ie activex规范写的。

二、

WebBrowser Control Internet Explorer

二者又太多的共同点,你都是通过COM接口来访问其功能。当调用webbrowser控件时,使用的是webbrowser对象,在vc中是使用class ID CLSID_WebBrowser的接口类。

当自动化ie时,必须建立名为 InternetExplorer的对象,vc等语言中使用名为class ID CLSID_InternetExplorer的接口类。

 

接口

webbrowser4个接口(如图),其中3个提供全部的功能,第4DWebBrowserEvents2接口暴露事件

ie4 之前,仅有IwebBrowserIwebBrowserApp两个接口,且二者共享相同的功能,当开发ie4时候,决定加入第三个接口IWebBrowser2扩展webbrowser的功能。该接口派生于第二个接口。

IWebBrowser

IWebBrowser 仅仅是WebBrowser control的最初接口, 提供基本的例如导航web页面的功能。 作为其他派生接口的基础接口,有8个方法和30个属性。

方法

 描述

GoBack

导航到历史列表中的上一个页面

GoForward

导航到历史历表中的下一个项目                             

GoHome

导航到缺省页面.

GoSearch

导航到缺省搜索页面

Navigate

导航到一个页面或者页面

Refresh

刷新当前页面

Refresh2

可以选择刷新级别,如下:

REFRESH_NORMAL 普通刷新,并且不发送HTTP pragma:nocache 到服务器.

REFRESH_IFEXPIRED 仅仅当页面失效时才发送刷新请求

REFRESH_CONTINUE 内部使用,不要在编程时使用

REFRESH_COMPLETELY 发送HTTP pragma:nocache header 到服务器

Stop

停止当前导航

尽管WebBrowser control 提供了你需要的导航回退以及前向的方法,但是没有提供存取历史列表的途径. 你可与直接通过属性LocationUR来获取当前页的URL.

VB或者VC++中调用GoBack GoForward 方法式很容易的.你可以使用WebBrowser control 或者 Internet Explorer对象. 举例来讲, 在VB中你可以如下调用:

WebBrowser1.GoBack           ' Hosting WebBrowser control
InternetExplorer1.GoForward  ' Automating Internet Explorer object

VC++中如下:

m_webBrowser.GoBack();            // Hosting WebBrowser control
m_pInternetExplorer->GoForward(); // Automating Internet Explorer object

尽管 GoBack GoForward  方法十分重要,当控制WebBrowser control或者自动化操作 Internet Explorer, Navigate is 却是最重要的方法. Navigate 允许你导航到特定的你所想的web页或者文件. Navigate 带有5个参数, 允许你指定特定的URL以实现导航以及其他定义导航行为的信息.

第一个参数是 URL, 指示web页的位置和名称或者何处的文件你想装载。 (次擦书类型是 BSTR.) URL 可以是你所使用的标准URL 协议类型的一种,例如HTTP 和 FILE, 或者是全路经文件名的本地文件系统, 例如 C:/MyFile.htm.

第二个参数, Flags, 你可指定如何或者甚至何处装载特定的URL. (参数的类型是指向 VARIANT的指针) Flags 的值来自名为 BrowserNavConstants 的枚举类型 ,定义于 ExDisp.h 头文件中且有6个值, 详细解释见下列表. 你可以指定一个或者多个Flags 参数值 (请留意有些当前并未实现).

·         navOpenInNewWindow. 将导致一个新的窗口打开以显示URL. 缺省,如果你在自己的应用程序中控制 WebBrowser control,这些值将导致新的 Internet Explorer 浏览器窗口打开.

  • navNoHistory. 指定此URL将不加入到URL历史列表中
  • navNoReadFromCache. 当前未实现.
  • navNoWriteToCache. 当前未实现.
  • navAllowAutoSearch. 如果指定的URL未找到,自动搜索功能将试图导航到通常的顶级域名如.com .net .org以找到正确的URL。如果失败, URL将传递给搜索引擎.
  • navBrowserBar. 如果可能,将 URL 装入到 Explorer 的地址栏Bar

第三个参数 TargetFrameName. 指定web页的哪一个frame将会发生导航. (参数的类型是指向 VARIANT的指针)此字符串将为以存在于web页中的名字或者一个指定的值如 _top_search.  _top 值指定 URL 将被当前最顶层web页装入并不在任何一个当前页中存在的frame.  _search 指示搜索面板将被打开. (该值仅在你自动化操控Internet Explorer时发生.) 如果你指定的frame名称并未发现,, 新的Internet Explorer 窗口将被打开。

你可以使用 PostData 参数 (第四个)通过HTTPpost事务将指定特定的数据发送到服务器. (参数的类型是指向 VARIANT的指针) Post 处理用于将在HTML表单收集的数据发送到服务器。如果此参数不指定任何数据 ,  Navigate 方法将使用Get方法. 另外,如果你不指定 HTTP 协议的URL (换句话讲,如果你指定例如 FILE 协议的 URL), PostData 参数将被忽略。

你也可以使用第五个参数, Headers, 以发送HTTP 头信息到服务器. (T参数的类型是指向 VARIANT的指针) 这些加入的头信息将被 WebBrowser 控件如常发送出去. 作为 PostData 参数, 如果你并不指定第一个参数, Headers 将被忽略.
如何对webbrowserIE编程 如何对webbrowserIE编程  、因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。 IE的体系 WebBrowser Host首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webbrowser control的应用程序,可以是vb程序,也可以是vc或者任何其他 阅读详情

相关推荐

C++利用WebBrowser控件创建自己的浏览器

利用WebBrowser控件创建自己的浏览器   是不是很早就想拥有个很有个性的浏览器?本文将介绍如何利用MicroSoft的     WebBrowser控件在VC中创建个属于自己的浏览器。过程如下:   ①新建个基于对话框的工程,命名为test,然后在对话框上单击右键,选择     Insert ActiveX Control…在弹出的对话框中选择MicroSoft

Allen Roson 1万+

WebBrowser控件使用详解

方法 说明  GoBack 相当于IE的“后退”按钮,使你在当前历史列表中后退项  GoForward 相当于IE的“前进”按钮,使你在当前历史列表中前进项  GoHome 相当于IE的“主页”按钮,连接用户默认的主页  GoSearch 相当于IE的“搜索”按钮,连接用户默认的搜索页面  Navigate 连接到指定的URL  Refresh 刷新当前页面  Refresh2 ...

rockfall的专栏 5091

python模块介绍-webbrowser_Python基础--webbrowser

非常多人,提到Python,想到的就是爬虫。我会步的教你怎样爬出某个站点。今天就先介绍webbrowser,这个词您肯定不会陌生。对,就是浏览器。看看Python中对webbrowser的描写叙述:Thewebbrowsermodule provides a high-level interface to allow displaying Web-based documents to ...

weixin_32275943的博客 2816

如何获取网页密码框中的密码

种方法:使用脚本语言IE右键菜单 我们可以使用注册表来控制IE右键菜单.当你装了FlashGet(网际快车)时,你会发现IE右键菜单多了两项:"使用网际快车下载""使用网际快车下载全部链接",而这时你打开注册表,在HKEY_CURRENT_USER\\Software\\Microsoft\\Internet Explorer\\MenuExt\\下有这两个主键.这两个主键下都有两个值,

Keivin 2113

如何对webbrowserIE编程

  如何对webbrowserIE编程 、因为工作缘故,需要研究对IE编程,所以翻译了MS的有关资料,供参考。 IE的体系 WebBrowser Host首先,必须有COM的基础知识,因为IE本身就是COM技术的典型应用。我们看到最上层是WebBrowser的宿主(Host),也就是任何你想重用(ReUse)webb

skyremember的专栏 1万+

如何对webbrowserIE编程(三)

IWebBrowserAppIWebBrowserApp 接口仅仅在IE中实现。 典型的,你使用InternetExplorer 对象创建IE的实例. 然后你使用 IWebBrowserApp 接口操纵此实例. (今天采用IWebBrowser2 替代) IWebBrowserApp 接口继承自 IWebBrowser, 所以它提供 IWebBrowser 的全部功能。 因为IWebB

Rehawk的专栏 3594

如何对webbrowserIE编程(二)

function StorePage(){d=document;t=d.selection?(d.selection.type!=None?d.selection.createRange().text:):(d.getSelection?d.getSelection():);void(keyit=window.open(http://www.365key.com/storeit.

B!ng 1784

如何对webbrowserIE编程(四)

如何对webbrowserIE编程(四) 寄宿WebBrowser 控件我们现在开始在VBVC中创建些程序来寄宿(Host)WebBrowser控件。在你完成本部分的样本,你将对如何创建寄宿WebBrowser控件的应用程序又个基本的了解。当你看到如此容易的加入Web浏览功能加入到你的应用程序,我相信你会立即开始实践的。使用VBVB中,你可以在5分钟内开发个全功能的

B!ng 2675

如何对webbrowserIE编程(六)

使用VC++COM API尽管使用VC不像Vb中那么容易自动化IE,但是也不太难,尤其是你理解了CONCOM API。无论你使用MFC, ATL, 或者标准 C++自动化IE,方法都是样—你使用COM API来实现.VC++中创建Internet Explorer实例包括要调用COM API CoCreateInstance ,指定第个参数为 CLSID_InternetExplore

shanhe的专栏 9998

WebBrowser控件指定IE的使用版本

最近遇到个WIN7 32位用户,用脚本怎么指定IE版本,怎么不成功,手动修改注册表却成功了,琢磨了下,发现问题了,所以就想着做个比较全面的总结,方面方便自己查阅,另方面也希望可以帮助到需要帮助的小伙伴们,避免踩坑。若有纰漏,请各位小伙伴们指正;

Commas的博客 3494

Internet Explorer 编程简述(WebBrowser还是WebBrowser_V1

关键字:WebBrowserWebBrowser_V1,NewWindow, NewWindow2, NewWindow3, INewWindowManager 你的机器上总是存在着“两”个WebBrowser个叫WebBrowser,另个叫WebBrowser_V1,其CLASSID如下:  CLASS_WebBrowser: TGUID = {8856F961-340A-1

eagleboost's blog 1万+

Internet Explorer 编程简述(WebBrowser还是WebBrowser_V1收藏

 Internet Explorer 编程简述(WebBrowser还是WebBrowser_V1收藏新篇: Internet Explorer 编程简述(二)在IE中编辑OLE嵌入文档 | 旧篇: Internet Explorer 编程简述(序)function StorePage(){d=document;t=d.selection?(d.selection.type

skyremember的专栏 4171

[IE编程] WebBrowser控件中设置页面的缩放

如果你的程序中使用WebBrowser控件并且希望有IE 样的页面缩放功能(如下图),可以通过向IWebBrowser2 发送OLECMDID_OPTICAL_GETZOOMRANGE,OLECMDID_OPTICAL_ZOOM命令来实现。 示例代码如下: 取得缩放比例的范围: CComVariant varRange; spWebBrowser->ExecWB(OLECM...

HsuanKeny的博客 1044

[IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式

IE8 在渲染引擎做了很大的改动,新增加个标准模式 (Standard Mode)。 不少软件都内嵌了IEWebBrowser控件(也就是MSHTML.dll)来显示网页, 当用户机器升级到IE8, WebBrowser控件也会随之升级到IE8的渲染引擎。  为了保证这些使用WebBrowser控件的应用软件能够工作起来原来样,IE8的WebBrowser控件在默认情况下使用了IE

IE浏览器开发 9656
下一篇: 如何对webbrowser和IE编程(二)
bird207
博客等级 码龄18年 1粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值