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

Published At
Categories with Web编程
Tagged with
comments powered by Disqus