如何获取一个 HTML 框架的 web 浏览器对象模型

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 196340
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。
概要
使用此文章详细信息在标准的技术的 web 浏览器控件主机可以访问在控件内的 HTML 页中的框架窗口的 web 浏览器对象模型。此对象模型提供了额外的框架窗口通过 HTML 对象模型不公开的功能。
更多信息
下面的代码演示如何访问的 HTML 页中框架在 web 浏览器对象模型更新每个框架的内容。

最重要的代码使用 HTML 文档对象 IOleContainer::EnumObjects 的方法枚举在页上的嵌入。 这些嵌入的每个代表页面上的控件。通过查询每个控件对象 IWebBrowser2,此代码可以确定控件是否是一个 sub-frame。和 IWebBrowser2 表示在 web 浏览器对象模型 ; 如果为该接口成功 QueryInterface,结果是在 web 浏览器对象模型的引用。
// Get the IDispatch of the documentLPDISPATCH lpDisp = NULL;lpDisp = m_webBrowser.GetDocument();if (lpDisp){   IOleContainer* pContainer;   // Get the container   HRESULT hr = lpDisp->QueryInterface(IID_IOleContainer,                                       (void**)&pContainer);   lpDisp->Release();   if (FAILED(hr))      return hr;   IEnumUnknown* pEnumerator;   // Get an enumerator for the frames   hr = pContainer->EnumObjects(OLECONTF_EMBEDDINGS, &pEnumerator);   pContainer->Release();   if (FAILED(hr))      return hr;   IUnknown* pUnk;   ULONG uFetched;   // Enumerate and refresh all the frames   for (UINT i = 0; S_OK == pEnumerator->Next(1, &pUnk, &uFetched); i++)   {      IWebBrowser2* pBrowser;      hr = pUnk->QueryInterface(IID_IWebBrowser2, (void**)&pBrowser);      pUnk->Release();      if (SUCCEEDED(hr))      {         // Refresh the frame         pBrowser->Refresh();         pBrowser->Release();      }   }   pEnumerator->Release();}
注意 ActiveX 控件宿主 HTML 页中可以使用此方法以类似的方式。一般情况下,访问不安全的 web 浏览器对象模型的 ActiveX 控件不是可安全执行脚本,应相应地实现 IObjectSafety 接口的安全。
(c) Microsoft Corporation 1998,保留的所有权限。Scott Roberts,Microsoft 公司的贡献。
web 浏览器框架

警告:本文已自动翻译

属性

文章 ID:196340 - 上次审阅时间:05/12/2004 16:07:28 - 修订版本: 3.0

Microsoft Internet Explorer (Programming) 6.0

  • kbmt kbfaq kbhowto kbwebbrowser KB196340 KbMtzh
反馈