如何从脚本中的容器的访问方法/属性

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

点击这里察看该文章的英文版: 188015
本文已归档。它按“原样”提供,并且不再更新。
概要
承载 web 浏览器控件在 Visual c + + 应用程序时, 可能需要从 Web 页上的脚本访问该容器的方法或属性。本文介绍如何执行此操作通过实现 IDocHostUIHandler 接口。
更多信息
通过实施 IDocHostUIHandler 界面,您可以控制在宿主应用程序中的许多 web 浏览器控件的用户界面功能。IDocHostUIHandler 还允许您扩展访问脚本中从容器的方法和属性在动态 HTML (DHTML) 对象模型。

IDocHostUIHandler GetExternal() 方法提供了此功能。 当在 Web 页上的脚本调用"window.external.yourMethod"时,web 浏览器控件调用 GetExternal 方法以检索宿主应用程序的 IDispatch 的指针。它是通过 this 指针 web 浏览器控件是能够访问您的方法和属性。

一旦 web 浏览器控件具有一个指向该容器的 IDispatch,然后它调用 IDispatch::GetIDsOfNames() 获取方法或属性在这种情况下,从脚本,yourMethod 调用的 DISPID。

最后,web 浏览器控件调用与该 DISPID IDispatch::Invoke() 从 GetIDsOfNames() 检索。

下面是扩展能够从脚本访问容器的方法和属性在 DHTML 对象模型时必须执行这些步骤:
  1. 实现 IDocHostUIHandler。
  2. 实现 IDocHostUIHandler::GetExternal 方法。设置该 IDispatch 的容器的参数如下:
    STDMETHOD(GetExternal)(IDispatch** ppDispatch){   // Assumes you inherit from IDispatch   *ppDispatch = (IDispatch*)this;   (*ppDispatch)->AddRef();   return S_OK;}					
  3. 返回从 GetIDsOfNames 调度 ID (DISPID) 方法或属性。如果您添加了您的方法或使用向导的属性,这将是为您完成。
  4. 实现方法或属性中的 IDispatch::Invoke 实现的 DISPID 像下面这样:
    STDMETHODIMP CAtlBrCon::Invoke(DISPID dispidMember, REFIID riid,                               LCID lcid, WORD wFlags,                               DISPPARAMS* pDispParams,                               VARIANT* pvarResult,                               EXCEPINFO* pExcepInfo, UINT* puArgErr){   switch (dispidMember)   {      case DISPID_MYMETHOD_OR_PROPERTY:         // Do something here      default:         return E_INVALIDARG;   }   return S_OK;}					
  5. 此脚本中调用方法或容器的属性:
     <SCRIPT LANGUAGE="VBScript">    Sub SomeControl_OnClick       window.external.yourMethod    End Sub </SCRIPT>					
参考
有关本文中讨论的技术的详细信息,请参阅关于高级宿主接口和在 MSDN 在线 Web 研讨会 IDocHostUIHandler 文档: (c) Microsoft Corporation 1998,保留的所有权限。Scott Roberts,Microsoft 公司的贡献

属性

文章 ID:188015 - 上次审阅时间:10/09/2013 17:36:42 - 修订版本: 2.1

Microsoft Internet Explorer 4.0 128-Bit Edition, Microsoft Internet Explorer 4.01 Service Pack 2, Microsoft Internet Explorer 4.01 Service Pack 1, Microsoft Internet Explorer 5.0, Microsoft Internet Explorer 5.5

  • kbnosurvey kbarchive kbmt kbfaq kbhowto kbscript kbwebbrowser KB188015 KbMtzh
反馈