当前位置:首页 » 编程软件 » ie编程

ie编程

发布时间: 2023-01-31 15:39:11

① 如何对webbrowser和IE编程

解决方案1:
请注意webbrowser control位于第二级中。

MSHTML
早期的mshtml具有读取显示html的功能,plug-in都是按照ie activex规范写的.GoForward '/. Navigate 带有5个参数,第4个DWebBrowserEvents2接口暴露事件
ie4 之前,webbrowser control装载windows word,但是却可以作为其他控件的容器(如图中所示的). 举例来讲。针对不同的文档,你可以将activex控件置于html中,对于html文档。

IWebBrowser
IWebBrowser 仅仅是WebBrowser control的最初接口,并且不发送HTTP pragma,决定加入第三个接口IWebBrowser2扩展webbrowser的功能,仅有IwebBrowser和IwebBrowserApp两个接口.Navigate允许你导航到特定的你所想的web页或者文件,提供浏览能力给上层宿主,也可以是vc或者任何其他语言的应用程序。
Webbrowser control既是activex control也是activex document 的宿主,。MSHTML实际上是一个active 文档服务器,但是没有提供存取历史列表的途径:nocache 到服务器.

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

REFRESH_CONTINUE 内部使用、
WebBrowser Control 与 Internet Explorer
二者又太多的共同点.GoBack ' /, Navigate is 却是最重要的方法。 作为其他派生接口的基础接口. 你可与直接通过属性LocationUR来获取当前页的URL,此时mshtml就是一个activex宿主,当控制WebBrowser control或者自动化操作 Internet Explorer.doc文档,它针对特殊的类型.dll来使用webbrowser control的,你都是通过COM接口来访问其功能; Automating Internet Explorer object

尽管 GoBack 和 GoForward 方法十分重要,必须建立名为 InternetExplorer的对象。

二。

接口
webbrowser有4个接口(如图),仅仅是调用webbrowser control即可,vc等语言中使用名为class ID CLSID_InternetExplorer的接口类,控制webbrowser control (就像控制其他任何activex com 控件一样);/, 允许你指定特定的URL以实现导航以及其他定义导航行为的信息。该接口派生于第二个接口。如果你想显示一个。应用程序必须是可容纳activex控件的容器;GoForward()。

方法

描述

GoBack

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

GoForward

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

GoHome

导航到缺省页面,有8个方法和30个属性; Hosting WebBrowser control
m_pInternetExplorer->,但是并不提供IE窗口的呈现功能,其中3个提供全部的功能,不要在编程时使用

REFRESH_COMPLETELY 发送HTTP pragma,webbrowser装载名为mshtml的组件(如图所示),调用特殊类型注册的文档server以显示文档.GoBack()。作为控件,shdocvw还是提供了简单创建web 应用程序的能力,各种插件—别意外,还可以控制其他的控件如vbscript 脚本引擎和javascript脚本引擎,当开发ie4时候:
m_webBrowser,使用的是webbrowser对象; Automating Internet Explorer object

VC++中如下.dll包含了webbrowser control ; Hosting WebBrowser control
InternetExplorer1。我们看到最上层是WebBrowser的宿主(Host),可以是vb程序,也就是任何你想重用(ReUse)webbrowser control的应用程序:
WebBrowser1。甚至IE也不直接而是通过shdocw。

Shdocvw
Shdocvw。记得吗, 在VB中你可以如下调用,你不需要开发不同的应用。当调用webbrowser控件时.你可以使用WebBrowser control 或者 Internet Explorer对象.

GoSearch

导航到缺省搜索页面

Navigate

导航到一个页面或者页面

Refresh

刷新当前页面

Refresh2

可以选择刷新级别:nocache header 到服务器

Stop

停止当前导航

尽管WebBrowser control 提供了你需要的导航回退以及前向的方法.
在VB或者VC++中调用GoBack 和 GoForward 方法式很容易的:

REFRESH_NORMAL 普通刷新,如下,作为文档容器, 提供基本的例如导航web页面的功能。之后章节会讲到如何将ie的高级特性加入到你的应用程序,且二者共享相同的功能; /。尽管shdocvw提供了大部分的浏览功能,在vc中是使用class ID CLSID_WebBrowser的接口类,geszhong,java applet 。尽管如此。
当自动化ie时,因为IE本身就是COM技术的典型应用,必须有COM的基础知识IE的体系

② 如何对webbrowser和IE编程

 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 将被忽略. (二) 调用 Navigate 方法比GoBack 以及 GoForward 要困难,但如果你正仅仅导航到URL 且并不传递任何附加参数, 它的调用很容易。 举例来说, VB中导航到 Microsoft 主页, 可如下: WebBrowser1.Navigate "http://www.microsoft.com" VB代码调用Navigate 如此容易因为所有参数出第一个参数外都可以是可选. 如此相对照,VC++不可以省略任何参数. 如果你想使用VC++不是勇任何特别的参数导航到 Microsoft的 home page, 你必须传递空的VARIANT 结构。 MFC 应用程序,你必须如下调用 Navigate COleVariant vtEmpty; m_webBrowser.Navigate(_T("http://www.microsoft.com"), &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty); 该例子展示了在MFC应用程序中控制WebBrowser控件. 我传递一个普通的字符串而替代 BSTR 因为 MFC 提供了一个 WebBrowser 控件的包装类,第一个载包装类中是LPCTSTR, 一个普通的字符串. 其他参数为指向 VARIANT 结构的指针。 如果你不想指定任何特别的参数, 别仅仅传递 NULL —那样做, 你的应用程序会招来崩溃。你必须传递一个空的VARIANT 结构的指针. 前面的代码使用
了 COleVariant 类, 那是一个与 CComVariant 类相似的类。 COleVariant 简单包装了 VARIANT 使得VARIANT 结构易于使用. 属性 现在你看到了所有的 IwebBrowser 的方法,你大概向了解其属性。(我是不是太苛求了?) IWebBrowser 接口有30个属性,描述于表6-2. 我一已按照IWebBrowser 的Vtable中的字母序列出。 Table 6-2. IWebBrowser 属性按照vtable排序 属性 描述 Application 返回宿主WebBrowser 控件的自动化对象 (IDispatch) 实现,如果对象不可用,则返回的WebbOrwser控件的自动化对象 Parent 返回WebBrowser控件的父控件的自动化实现 (IDispatch) ,通常是容器—举例来讲,,您的宿主或者Internet Explorer 窗口。 Container 返回WebBrowser控件容器的自动化对象 (IDispatch) 。通常,该值返回同 Parent 属性一样的值。. Document 返回活动文档的自动化实现 (IDispatch) 。如果 HTML 当前显示在WebBrowser, Document 属性给出你存取 DHTML 对象模型的途径. TopLevelContainer 返回一个布尔值指示IE是否是WebBRowser控件的顶级容器。在 words中,如果IE是宿主应用承需则返回true Type 返回已经在WebBrowser中装载的对象的类型。举例,如果HTML document被装载, Type 将返回 Microsoft HTML Document 5.0. 如果文档是Word 文档, Type 返回 Microsoft Word Document. Left .返回或设置控件在容器窗口左边距 Top .返回或设置控件在容器窗口顶部边距 Width 返回或设置webbrowser控件在窗口中的水平方向的向苏为单位宽度 Height 返回或设置webbrowser控件在窗口中的处置方向的向像素为单位高度 LocationName 返回一个WebBrowser当前显示的资源名称的字符串 (换句话讲, HTML 页, Word 文档,,folder, 诸如此类) 。 如果资源是 HTML 页,字符串是标题。如果资源是文件或者文件夹,字符串为文件名或者文件夹名。—举例, foo.doc (Word文档)或者 Temp (temp directory.) LocationURL 返回WebBrowser正在显示的资源的URL Busy 返回一个布尔值指示WebBrowser 当前是否正在装入 URL.。如果
当前属性返回 true, 你可以使用 Stop 方法取消代掉导航。
看完表 6-2, 清晰展示了你可使用的属性. 当中的一些可能需要更多的解释. IWebBrowser 使用的相当多的一个属性是 LocationURL, 给出了当前你装入WebBrowser窗口的 URL。 获取 LocationURL 值在VB中相当容易: Dim strLocation strLocation = WebBrowser1.LocationURL
Visual C++的MFC应用, MFC 包装类使的访问LocationURL 很容易. 你简单调用 GetLocationURL 方法,该方法返回一个 CString 对象. 当你想在自动化IE中或者
webBrowser的MFC应用中访问 LocationURL when automating Internet
Explorer or when hosting the WebBrowser control in a C++ application that's not built by using MFC, 你必须调用携带一指向BSTR的指针。 BSTR 将包含返回值. 此处展示如何在 C++中使用: BSTR bstrURL; m_pInternetExplorer->get_LocationURL(&bstrURL); 存取 Document 属性在VB中相当容易,当定义一个变量后(举例, HtmlDoc), 值需要 set 为 Document 属性: Set HtmlDoc = WebBrowser1.Document MFC 中也很容易,使用 MFC 包装类的GetDocument方法: IDispatch* pDisp; pDisp = m_webBrowser.GetDocument();
GetDocument 返回指向代表文档 IDispatch 接口的指针. 如果 GetDocument 失败, 该对象将为NULL. 非MFC C++ 应用或者任何自动化IE
的C++ 应用访问Document 属性就只能够采用调用COM的方法—通过属性的get_方法. (注艺属性实只读,所以这里无put_ 方法.) 当调用 Document 的get_ 方法,你传递一个接受 IDispatch 的指针.此处展示了如何调用: IDispatch* pDisp; HRESULT hr = m_pInternetExplorer->get_Document(&pDisp); 当使用这些代码,你可以使用 SUCCEEDED 宏( Win32 API的一部分), 以监测调用是否成功。在尝试使用Idispatch接口前你应当确信调用成功。
(三) IWebBrowserApp IWebBrowserApp 接口仅仅在IE中实现。 典型的,你使用InternetExplorer 对象创建一个IE的实例. 然后你使用 IWebBrowserApp 接口操纵此实例. (今天采用IWebBrowser2 替代) IWebBrowserApp 接口继承自 IWebBrowser, 所以它提供 IWebBrowser 的全部功能。 因为
IWebBrowserApp呈现一个IE窗口的实例, 所以它的方法和属性典型地允许你控制浏览器窗口的用户接口。
这些方法和属性并非包含在WebBrowser的 IWebBrowser 中的:寄宿control的应用程序提供诸如状态条, 工具条, 以及菜单条等用户接口. WebBrowser 控件仅仅用于装载web页以及其它类型文件。 IWebBrowserApp 有4个方法和10 各属性。 方法 IWebBrowserApp 接口的属性很直观立如下表, 但是有2个有理由值的讨论:GetProperty 和 PutProperty. 此两个方法允许你在IE属性包(property bag)中存储一个属性一边你能够在其后重新找回他们。 你将典型地从一个web页上存储一些状态信息到另一个web页 (事实上,使用IWebBrowser2 接口你可以在宿主一个WebBrowser 控件时候使用此方法) Table 6-3. IWebBrowserApp vtable 次序的方法 方法 描述 Quit 促使 Internet Explorer 窗口关闭。换句话讲,将自动化操作关闭IE实例 ClientToWindow 转换一个点从窗口坐标到客户坐标。 PutProperty 存储一个属性值到ie的属性包,将可以随手采用GetProperty.获取 GetProperty 获取先前由 PutProperty.方法存储的属性值 VB代码: InternetExplorer1.PutProperty "CurrentPicture", 10 InternetExplorer1.GetProperty("CurrentPicture") VC++代码: CSomeClass::PutGetProperty(VARIANT vtCurrentValue, VARIANT* vtNewValue) { HRESULT hr; hr = m_pInternetExplorer->PutProperty(L"CurrentPicture", vtCurrentValue);

③ 如何对webbrowser和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和IE编程

IWebBrowserApp 接口仅仅在IE中实现。 典型的,你使用InternetExplorer 对象创建一个IE的实例. 然后你使用 IWebBrowserApp 接口操纵此实例. (今天采用IWebBrowser2 替代) IWebBrowserApp 接口继承自 IWebBrowser, 所以它提供 IWebBrowser 的全部功能。
因为IWebBrowserApp呈现一个IE窗口的实例, 所以它的方法和属性典型地允许你控制浏览器窗口的用户接口。 这些方法和属性并非包含在WebBrowser的 IWebBrowser 中的:寄宿control的应用程序提供诸如状态条, 工具条, 以及菜单条等用户接口. WebBrowser 控件仅仅用于装载web页以及其它类型文件。
IWebBrowserApp 有4个方法和10 各属性。
方法 IWebBrowserApp 接口的属性很直观立如下表, 但是有2个有理由值的讨论:GetProperty 和PutProperty. 此两个方法允许你在IE属性包(property bag)中存储一个属性一边你能够在其后重新找回他们。 你将典型地从一个web页上存储一些状态信息到另一个web页 (事实上,使用IWebBrowser2 接口你可以在宿主一个WebBrowser 控件时候使用此方法)
Table 6-3. IWebBrowserApp vtable 次序的方法

方法

描述

Quit

促使 Internet Explorer 窗口关闭。换句话讲,将自动化操作关闭IE实例

ClientToWindow

转换一个点从窗口坐标到客户坐标。

PutProperty

存储一个属性值到ie的属性包,将可以随手采用GetProperty.获取

GetProperty

获取先前由 PutProperty.方法存储的属性值

VB代码:
InternetExplorer1.PutProperty "CurrentPicture", 10
InternetExplorer1.GetProperty("CurrentPicture")

VC++代码:
CSomeClass::PutGetProperty(VARIANT vtCurrentValue, VARIANT* vtNewValue)
{
HRESULT hr;
hr = m_pInternetExplorer->PutProperty(L"CurrentPicture",
vtCurrentValue);

if (SUCCEEDED(hr))
{
// Notice that vtNewValue is already a pointer, so you
// don't have to pass the address to GetProperty.
//
hr = m_pInternetExplorer->GetProperty(L"CurrentPicture",
vtNewValue);
}

return hr;
}

PutGetProperty 方法接受包含当前属性值的 VARIANT 变量指针且将接收属性值。
属性 IWebBrowserApp 接口有10 个属性. Table 6-4. IWebBrowserApp vtable 次序的属性

属性

描述

Name

返回对象的名称t. (举例,当自动化IE, Name 属性将返回 Microsoft Internet Explorer.)

HWND

返回IE窗口的句柄

FullName

返回ie可执行文件的全路径 (iexplore.exe).

Path

返回IE应用程序的全路径.

Visible

监测和设置IE窗口是否可见。 (换句话讲,你可与使用此属性显示/隐藏)

StatusBar

显示或者隐藏IE状态条,也可监测当前状态条

StatusText

设置或隐藏状态条文字

ToolBar

显示或者隐藏IE工具条,也可监测当前工具条状态

MenuBar

显示或者隐藏IE菜单条,也可监测当前工具菜单态

FullScreen

设置或者检测一个值指示IE当前是否最大化显示。最大化显示,iE占据整个屏幕

Table 6-4 中的属性列表直截了当且易于使用。举例来说, 如果你想从你的Vb程序中获取IE状态条中的文字,你应当使用如下代码:
Dim strStatusText
strStatusText = InternetExplorer1.StatusText

使用MFC包装类的VC++程序代码如下:
BSTR bstrStatusText;
HRESULT hr = m_pInternetExplorer->get_StatusText(&bstrStatusText);

IWebBrowser2
因为COM规则要求接口恒久不变, 要加入新的工呢高COM,你必须增加新的接口。 新的接口可扩展自其他接口已扩展功能。 举例,当心的需求引入WebBrowser 和Internet Explorer 接口, 开发者被要求建立一个新的接口: IWebBrowser2.
早期, IWebBrowser2 继承自 IWebBrowser 和 IWebBrowserApp, 还提供不包含在着两个接口中的功能. 所以你应当使用 IWebBrowser2 接口替代 来操纵WebBrowser 控件或者 Internet Explorer.
IWebBrowser2 接口有4个方法和8个属性.
方法 IWebBrowser2 接口方法如下描述,按照 vtable 次序, in Table 6-5.
也许IWebBrowser2 、接口踵使用最多的方法是ExecWB. 它通过WebBrowser实现了一个 IOleCommandTarget 接口的Exec的包装实现。 在 ExecWB 方法 被创建前, 你不可以直接从VB中调用IOleCommandTarget::Exec, 因为VB不可访问 IOleCommandTarget 接口 ,因而VB不可直接使用该接口的ExecWB方法。 IOleCommandTarget::Exec 方法过去大量使用,所以 WebBrowser 开发者决定创建ExecWB 以使事情变得容易。

Table 6-5. IWebBrowser2 Vtable 次序的方法

方法

描述

Navigate2

功能基于Navigate 方法,不同在于 Navigate2 允许你导航到飞URL表达的地方,例如Windows shell folder. (Windows shell folder 是指向标示符指针, 或者windows shell命名空间中的 PIDL,)

QueryStatusWB

IoleCommandTarget接口的QueryStatus方法在 WebBrowser.中的包装实现

ExecWB

IoleCommandTarget接口的Exec方法在 WebBrowser.中的包装实现

ShowBrowserBar

显示或者隐藏特定的浏览器条. 该方法仅仅用于InternetExplorer 对象

为什么你无论如何都要调用ExecWB方法?因为它提供了你需要的功能(通过IOleCommandTarget::Exec)不是暴露于webbrowser接口。你大概疑惑于为社么开发者不实现扩展属性和方法。记住:COM规则是一旦接口发表就不可改变。所以你不能够不能增加功能而不创建新的接口。
ExecWB 方法允许WebBrowser 开发者增加新的功能而不用创建新的接口。再之, 那是由WebBrowser 通过 ExecWB 代表性的暴露不常用的工的途径, 譬如调用 Save As 对话框或者缩放web页的字体。 ExecWB 工作的方法是传递一个你想调用的command ID 和必需的参数. 太多的 command IDs ,他们包含于OLECMDID 实现文档头文件he DocObj.h .

作为举例, 支持缩放web页的内容字体。Internet Explorer 允许你通过View菜单的Text Size子菜单改变字体的大小从最小到最大。 ExecWB 方法暴露了允许你改变显示在浏览器中的文字大小。对于Zoom 命令, 你可指定特殊值0, 1, 2, 3, or 4, 0 是最小字体 ,4是最大字体。以下举例为改变字体为最大(VB):
WebBrowser1.ExecWB OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, _
CLng(4), Null

再次代码中, 我调用 ExecWB 方法, 传递OLECMDID_ZOOM 常量给第一个参数. 此常量指定 zoom 操作将被执行。 第二个参数传递给ExecWB 不要提示用户。另外的选择, 你可以提醒用户而是用OLECMDEXECOPT_PROMPTUSER. (见 DocObj.h.)
第三个输入参数指示要设定的文字尺寸。我想是文字尽可能的大,所以我指定了4 。注意我在调用中使用了VB的Clng函数包装此值,转换我指定的此值为一个variant—输入需要的类型.最后为一个输出参数包含任何返回值。因为返回值不需要关心,我传递Null.

属性 IWebBrowser2 接口有8个属性。 (Table 6-6 按照vtable次序展示其)。他们都很直观,我仅仅解释恰宏很特别的一个—AddressBar.
Table 6-6. IWebBrowser2 Properties in Vtable Order

属性

描述

ReadyState

返回WebBrowser 的状态(换句话讲 ,该属性指示文档是否完成装载). 尽管你可以使用 ReadyState 属性, 使用 DocumentComplete 时间检测文档是否装载还是比较好些。 (那意味着所有HTML和文档被装载

Offline

.返回或者设置检测webbrowser是否处于脱机模式的变量

Silent

RegisterAsBrowser

.设置或者检测Webbrowser是否是作为顶层浏览器被登记

RegisterAsDropTarget

.设置或返回WebBrowser是否作为导航的拖放对象 。如果登记委托放对象,用户可直接拖放连接到浏览器

TheaterMode

返回或者设置Internet Explorer是否处于theater 或者 normal window 模式.。在theater 模式, Internet Explorer占据整个屏幕就像处于FullScreen 模式,但也有最小化的用户接口元素 (此属性仅仅展示于InternetExplorer 对象)

AddressBar

显示或者隐藏地址栏(此属性仅仅展示于InternetExplorer 对象)

Resizable

返回或者设置Internet Explorer是否可被调整大小, 你可利用此属性防止用户改变webbrowser的大小(此属性仅仅展示于InternetExplorer 对象)

AddressBar 属性允许你显示/隐藏Internet Explorer 地址栏—一个包含可输入URL的文本框 允许你导航到某个Url。 能够显示或者隐藏地址条允许你完全控制你的用户的导航体验
在你的企业网络或者中小学控制用户导航体验.在此环境下,你将控制用户的导航以至于可确定某些不恰当地页面不可访问。你可创建你自己的浏览器。但是如果你没有时间和资源这么做,你可以自动化IE来代替.自动化IE允许你管掉所有的用户界面允许用户导航到某个web页,像菜单条, 工具条,以地址栏. 之后你可建立一定数量的可访问web页连接列表给用户。

关掉这些用户接口很容易. VB代码:
InternetExplorer1.AddressBar = False
InternetExplorer1.ToolBar = False
InternetExplorer1.MenuBar = False

⑤ 如何对webbrowser和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的高级特性加入到你的应用程序。
http://blog.csdn.net/shanhe/article/details/397373
http://wenku..com/link?url=IU7F4Jks8bX2ROAO_QdckFG5_Nmr4bUUCnRVW

⑥ 如何对webbrowser和IE编程

每次 Internet Explorer需要向客户提供关于当前活动状态的信息, Internet Explorer 激发通过DWebBrowserEvents2 连接点激发一个事件. (之前到版本 4, Internet Explorer 通过 DWebBrowserEvents 接口激发事件.但到了版本4.x和5, Internet Explorer 通过 DWebBrowserEvents2 连接点.)注意如何领会到Internet Explorer加法那些事件?最佳途径是MSDN Online Web Workshop. 另外采用 OLE-COM Object Viewer 不像WebBrowser 控件 和 Internet Explorer的其他接口,是剑接口没有继承体系. DWebBrowserEvents 接口严格应用于Internet Explorer 3. 如果你正宿主WebBrowser 控件或者自动化Internet Explorer 5, 你可以通过此接口接收事件—但是不可挂接. DWebBrowserEvents2 接口包含的方法是为Internet Explorer 5定制的.用 DWebBrowserEvents2 替代DWebBrowserEvents ,你将有更多的控制能力. 所以不要忘记接口的最后面的2.尽管DWebBrowserEvents2 是一个事件接口, 它其实就是像IWebBrowser2 一样的另外 COM 接口,所以它可以包含方法. (D 开头的命名是表示这是派遣接口.一个派遣接口是一个IDispatch 接口.但不同于普通接口, 派遣接口没有vtable.) 就像一个接口一样,派遣接口只不过提供一些函数的定义—他们并不真实实现.事件的实现由客户提供.举例来说,为了让WebBrowser 激发一个事件, 在DWebBrowserEvents2 接口中适当定义一些方法.这些方法由客户实现.但WebBrowser不直接调用这些方法.换句话讲, WebBrowser 并不调用DocumentComplete 方法.因为 DWebBrowserEvents2 是派遣接口, WebBrowser 通过IDispatch::Invoke调用客户的实现. 早期, 当WebBrowser 调用客户的Invoke 实现, WebBrowser 传递事件被激发的DISPID.注意某些工具如Visual Basic, MFC, 和 ATL 提供Invoke实现表7-6 列出 WebBrowser 事件. (这些是WebBrowser 控件和Internet Explorer供有的事件,尽管有些事件仅仅用于自动化Internet Explorer).注意尽管有些方法为不包含2.尽管DWebBrowserEvents2 并非继承自WebBrowserEvents, DWebBrowserEvents2 还是匹配DWebBrowserEvents中被更改的,以免混淆。注意表 7-6 重的参数有些值同样有 VARIANT_ TRUE 或VARIANT_FALSE. 如果你使用Visual C++,确信分派使用这些值不要使用 TRUE 或FALSE. 如果你使用Visual Basic, 它会自动帮助你转换,你可以比较True和False.现在来仔细看看这些事件Table 7-6WebBrowser 事件私有事件描述BeforeNavigate2 在导航之前发生. (该事件并不在不刷新页面的时候发生)CommandStateChange 当命令状态改变时发生.该事件告诉你何时使能或者禁止 Back 以及Forward 菜单像或者按钮.DocumentComplete 当整个文档完全完成装载时发生.如果你刷新页面, 此事件并不激发.DownloadBegin 当一个下载项目开始时候发生,此事件也在你刷新(IWebBrowser2::Refresh.)时发生DownloadComplete党整个下载项目完成是发生该事件也发生在完成刷新页面.NavigateComplete2 当整个导航完成. 该事件对应于BeforeNavigate2.NewWindow2 在一个新的窗口被创建以显示Web页或者其他资源的时候发生。譬如你在页面中以新建窗口的方式打开一个连接OnFullScreen 当FullScreen属性被改变时候发生.此事件携带一个VARIANT_ BOOL类型的输入参数指示Internet Explorer 是否处于全屏(full-screen)模式 (VARIANT_TRUE) 或者处于普通模式(VARIANT_FALSE).OnMenuBar 菜单条MenuBar属性被改变的时候发生. 一个VARIANT_ BOOL类型的输入参数指 Internet Explorer的菜单条属性是可见(VARIANT_TRUE) 或者隐藏 (VARIANT_ FALSE).OnQuit 当Internet Explorer正在退出时发生. 该事件当用户关闭浏览器或者调用Quit方法.OnStatusBar 当StatusBar属性被改变的时候发生。事件携带VARIANT_ BOOL类型的输入参数指示Internet Explorer的状态条是否可见 (VARIANT_TRUE) 或者隐藏 (VARIANT_FALSE).OnTheaterMode 当TheaterMode属性被改变时发生. 事件携带VARIANT_ BOOL类型的输入参数指示Internet Explorer的状态条是否可见 (VARIANT_TRUE) 或者隐藏 (VARIANT_FALSE).OnToolBar 当ToolBar属性被改变时发生. 事件携带VARIANT_ BOOL类型的输入参数指示Internet Explorer的状态条是否可见 (VARIANT_TRUE) 或者隐藏 (VARIANT_FALSE).OnVisible 当WebBrowser将被显示或者隐藏时发生。. 事件携带VARIANT_ BOOL类型的输入参数指示Internet Explorer的状态条是否可见 (VARIANT_TRUE) 或者隐藏 (VARIANT_FALSE).ProgressChange 当下载进度被更新时候发生PropertyChange 当属性改变时候发生。典型的, 当PutProperty方法被调用时StatusTextChange Internet Explorer 和 WebBrowser 控件改变状态条时候发生。即使webbrowser控件没有状态条。StatusTextChange给客户一个改变状态条的机会TitleChange .当文档对象的title可用或者改变的时候发生 就像字面上所说. 当Internet Explorer 导航到一个WEB页是激发; 因此, 当用户输入一个 URL, 点击 Back 或者 Forward 按钮, 或者处理一个导航时都会发生. BeforeNavigate2 也在WebBrowser 控件导航类方法调用时发生, 例如 Navigate, Navigate2, GoHome, 或者 GoSearch. 也许, 该事件不会在你刷新页面时发生. 如果页面上有帧, BeforeNavigate2 将像顶级窗口一样被激发. BeforeNavigate2 由7个输入参数, 见7-7.Table 7-7Input Parameters of the BeforeNavigate2 将发生导航的顶级窗口或者帧的Idispatch接口的地址URL 将导航至的URL Flags 保留TargetFrameName 显示资源的窗口或者帧的名字字符串,或者为NULL(如果没有命名)PostData HTTP POST 传输的数据地址Headers增加的将要发给服务器的 HTTP 头. 一般HTTP头指定其它的服务器要求。传送给服务器的数据类型、状态马等Cancel cancel 标志的地址. 设置为TRUE可取消导航注意打所属参数匹配于Navigate 或者Navigate2的调用参数.如果 BeforeNavigate2 由一个或者多个导航类调用激发,这些导航类的方法参数 传递到BeforeNavigate2 方法.在事件的句柄函数中, 你可以使用Cancel 参数取消导航, 或者你可以是用pDisp 参数修改导航目的.设置Cancel 参数为 VARIANT_TRUE 可以取消导航,如果你想,你可以通过pDisp修改参数导航信息且导航到另外的位置.举例来说,如果我们向停止当前导航, 增加一些头信息,且导航到原先的URL.在Visual Basic, 我们可以如下代码实现:Private Sub WebBrowser1_BeforeNavigate2(ByVal pDisp As Object, _ URL As Variant, _ Flags As Variant, _ TargetFrameName As Variant, _ PostData As Variant, _ Headers As Variant, _ Cancel As Boolean) If TypeName(pDisp) = "WebBrowser" And Headers = "" Then pDisp.Stop pDisp.Navigate URL, Flags, TargetFrameName, PostData, _ Headers + "MyHeaders" Cancel = True End IfEnd Sub我们需要注意以上代码的几个重点.首先你必须检查pDisp 的类型使之确定为WebBrowser. 当页面包含帧, pDisp 可能不是 WebBrowser 对象由此一些导航会导致错误.其次你必须检查确信Headers 参数是空字符串以避免无限循环.记住BeforeNavigate2 每一次导航都会发生.因此如果你在BeforeNavigate2事件处理中调用Navigate, 另外一次 BeforeNavigate2 将被激活. 在前面的代码中, 仅仅在Headers 参数为空才调用Navigate 避免了无限循环. 如果Headers 参数是空, Navigate 将携带非空的 Headers 参数. 下一次BeforeNavigate2 北激活, Headers 将不为空; 此时,我们千万不可再次Navigate a,从而导致一个无限循环.第三点你必须调用pDisp 的Stop 方法.如果你没做到这点,"about:NavigationCanceled" Web 页将会载你首次取消掉导航时被显示. 是当Internet Explorer 想通知一个应用程序WebBrowser 命令状态已经改变时激发.当检测到Forward和Back 菜单项和按钮禁止或者使能时激发此事件.CommandStateChange 事件有2个参数, Command 和Enable。Command 输入参数将要改变状态的按钮的表示符,可以取值—CSC_NAVIGATEFORWARD 和CSC_NAVIGATEBACK分别表示是Forward按钮项和Back项,每次导航发生, CommandStateChange 事件发生并告诉你Forward 或者 Back 菜单项以及按钮将使能或禁止. 举例来说, 如果没有Web页在当前导航后发生, Command 的值应该为 CSC_NAVIGATEFORWARD, 并且Enable 参数将等于VARIANT_FALSE.第二个参数, Enable,如果命令可用(使能) 则为VARIANT_TRUE,如果禁止则值为VARIANT_FALSE. 为说明问题,我们看看代码。

⑦ 如何对webbrowser和IE编程

最佳途径是MSDN Online Web Workshop.
另外采用 OLE-COM Object Viewer,不像WebBrowser 控件 和 Internet Explorer的其他接口,是剑接口没有继承体系.DWebBrowserEvents 接口严格应用于Internet Explorer .
如果你正宿主WebBrowser 控件或者自动化Internet Explorer 5, 你可以通过此接口接收事件—但是不可挂接. DWebBrowserEvents2
接口包含的方法是为Internet Explorer 5定制的.用 DWebBrowserEvents2 替代DWebBrowserEvents。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:750
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1012
python中的init方法 发布:2025-10-20 08:17:33 浏览:719
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:879
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1127
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:351
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:229
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:912
python股票数据获取 发布:2025-10-20 07:39:44 浏览:876