最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
IE里的探索之定制浏览器好助手(下)
时间:2022-06-30 09:43:26 编辑:袖梨 来源:一聚教程网
IE里的探索之定制浏览器好助手(下)
(作者:青苹果工作室编译 2001年02月08日 14:00)
访问文档对象
现在 BHO 引用了 Internet Explorer 的 WebBrowser 控件并已经连接到浏览器 以接收它产生的事件。在 Web 页面被完全下载并被正确地初始化之后,现在终于可以通过 DHTML 文档对象模型访问它了。WebBrowser 的 Document 属性返回一个指向文档对象的 IDispatch 接口的指针:
CComPtr pDisp;
HRESULT hr = m_spWebBrowser2->get_Document(&pDisp);
get_Document() 方法提供的只是一个指向接口的指针。我们需要确定在 IDispatch 指针后面确实是一个 HTML 文档对象。如果使用 Visual Basic,以下是等价的代码:
Dim doc As Object
Set doc = WebBrowser1.Document
If TypeName(doc)="HTMLDocument" Then
' Get the document content and display
Else
' Disable the display dialog
End If
现在我们需要判断 get_Document() 返回的 IDispatch 指针的实质。Internet Explorer 不仅是一个 HTML 浏览器,还能处理任何 ActiveX 文档 ;即任何有作为 ActiveX 文档服务程序的应用程序支持的文档。这样一来,就不能保证查看的文档的确是一个 HTML 页面。
有一个解决办法就是查看 URL 并检查 URL 的扩展名。但该如何处理 Active Server Pages (ASP) 或一个暗含指向 HTML 页面的 URL?如果你使用了像 about 或 res 这样的定制协议又该如何?
我们决定采取另一种方式,它和上面的 Visual Basic 代码性质相同。这种想法就是,如果 IDispatch 指针确实指向一个 HTML 文档,对 IHTMLDocument2 接口的访问就能成功地返回。IHTMLDocument2 是综合了 DHTML 对象模型为 HTML 页面实现的所用功能的接口。以下代码片断说明如何进行这样的判断:
CComPtr pDisp;
HRESULT hr = m_spWebBrowser2->get_Document(&pDisp);
CComQIPtr spHTML;
spHTML = pDisp;
if (spHTML) {
// 取得文档的内容并显示它
}
else {
// 禁止代码窗口控件
}
如果访问 IHTMLDocument2 接口失败,spHTML 指针为 NULL。否则,我们就可以正常访问 DHTML 对象模型的方法和属性了。
(作者:青苹果工作室编译 2001年02月08日 14:00)
访问文档对象
现在 BHO 引用了 Internet Explorer 的 WebBrowser 控件并已经连接到浏览器 以接收它产生的事件。在 Web 页面被完全下载并被正确地初始化之后,现在终于可以通过 DHTML 文档对象模型访问它了。WebBrowser 的 Document 属性返回一个指向文档对象的 IDispatch 接口的指针:
CComPtr
HRESULT hr = m_spWebBrowser2->get_Document(&pDisp);
get_Document() 方法提供的只是一个指向接口的指针。我们需要确定在 IDispatch 指针后面确实是一个 HTML 文档对象。如果使用 Visual Basic,以下是等价的代码:
Dim doc As Object
Set doc = WebBrowser1.Document
If TypeName(doc)="HTMLDocument" Then
' Get the document content and display
Else
' Disable the display dialog
End If
现在我们需要判断 get_Document() 返回的 IDispatch 指针的实质。Internet Explorer 不仅是一个 HTML 浏览器,还能处理任何 ActiveX 文档 ;即任何有作为 ActiveX 文档服务程序的应用程序支持的文档。这样一来,就不能保证查看的文档的确是一个 HTML 页面。
有一个解决办法就是查看 URL 并检查 URL 的扩展名。但该如何处理 Active Server Pages (ASP) 或一个暗含指向 HTML 页面的 URL?如果你使用了像 about 或 res 这样的定制协议又该如何?
我们决定采取另一种方式,它和上面的 Visual Basic 代码性质相同。这种想法就是,如果 IDispatch 指针确实指向一个 HTML 文档,对 IHTMLDocument2 接口的访问就能成功地返回。IHTMLDocument2 是综合了 DHTML 对象模型为 HTML 页面实现的所用功能的接口。以下代码片断说明如何进行这样的判断:
CComPtr
HRESULT hr = m_spWebBrowser2->get_Document(&pDisp);
CComQIPtr
spHTML = pDisp;
if (spHTML) {
// 取得文档的内容并显示它
}
else {
// 禁止代码窗口控件
}
如果访问 IHTMLDocument2 接口失败,spHTML 指针为 NULL。否则,我们就可以正常访问 DHTML 对象模型的方法和属性了。
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22