如何对webbrowser和IE编程(二)

 

调用 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接口前你应当确信调用成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值