如何从一个 ActiveX 控件中检索 Web 页的 URL

文章翻译 文章翻译
文章编号: 181678 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

本文演示如何 ActiveX 控件可以检索 Web 页 (文档) 的该统一资源定位符 (URL) 上的它被承载。

这可能是用于限制对特定域/站点的使用情况的 ActiveX 控件或访问文件时提供相对路径。

更多信息

在嵌入 ActiveX 控件的初始化,Internet 资源管理器 (IE) 通过调用 IOleObject::SetClientSite() 将指针传递到其客户端站点。此过程可用于检索该容器的一个名字对象或访问文档对象模型来检索该宿主的 Web 页的 URL。

本文演示了如何从容器名字对象中检索当前的 URL。 有关如何获取文档对象模型中的 URL 的其他信息,请参阅 Microsoft 知识库中下面的文章:
172763信息: 访问在从一个 ActiveX 控件中的对象模型
请按照下列步骤从容器名字对象检索当前的 URL:
  1. 获得客户端站点 (IOleClientSite) 接口指针。将指针传递给客户端站点容器调用 IOleObject::SetClientSite()。 重写此方法以缓存 this 指针。
  2. 获取客户端站点通过调用 IOleClientSite::GetMoniker() 一个名字对象。
  3. 调用以获取当前文档的 URL 的 IMoniker::GetDisplayName()。
下面的代码示例演示如何通过重写 IOleObject::SetClientSite() 方法在活动模板库 (ATL) ActiveX 控件中的执行上述步骤:

示例代码

STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
   if (pClientSite != NULL)
   {
      // Obtain URL from container moniker.
      CComPtr<IMoniker> spmk;
      LPOLESTR pszDisplayName;

      if (SUCCEEDED(pClientSite->GetMoniker(
                                    OLEGETMONIKER_TEMPFORUSER,
                                    OLEWHICHMK_CONTAINER,
                                    &spmk)))
      {
         if (SUCCEEDED(spmk->GetDisplayName(
                                 NULL, NULL, &pszDisplayName)))
         {
            USES_CONVERSION;

            CComBSTR bstrURL;
            bstrURL = pszDisplayName;

            ATLTRACE("The current URL is %s\n", OLE2T(bstrURL));
            CoTaskMemFree((LPVOID)pszDisplayName);
         }
      }
   }

   return IOleObject_SetClientSite(pClientSite);
}
				

参考

有关 IOleObject、 IoleClientSite 和 IOleContainer 接口的详细信息,请参阅 Microsoft Visual c + + 的联机帮助。

(c) Microsoft Corporation 1998,保留的所有权限。通过标记戴维斯,Microsoft Corporation 的贡献

属性

文章编号: 181678 - 最后修改: 2004年7月15日 - 修订: 2.3
这篇文章中的信息适用于:
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
关键字:?
kbmt kbhowto KB181678 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 181678
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。
不再更新的 KB 内容免责声明
本文介绍那些 Microsoft 不再提供支持的产品。因此本文按“原样”提供,并且不再更新。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com