如何從指令碼存取容器的方法/屬性

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

188015
本文已封存。本文係以「現狀」提供且不會再更新。
結論
裝載 WebBrowser 控制項,在 Visual C++ 應用程式中的時, 可能需要從 Web 網頁上的指令碼存取容器的方法或屬性。本文將告訴您如何執行這項操作藉由實作 IDocHostUIHandler 介面。
其他相關資訊
藉由實作 IDocHostUIHandler 介面,您可以控制的許多使用者介面功能 WebBrowser 控制項的裝載應用程式中。IDocHostUIHandler 也可讓您擴充動態超文字標記語言 (DHTML) 物件模型來存取方法及指令檔內從容器的屬性。

IDocHostUIHandler GetExternal() 方法提供這項功能。 當 Web 網頁上的指令碼呼叫 window.external.yourMethod"時,WebBrowser 控制項呼叫 GetExternal 方法,以擷取主控應用程式 IDispatch 的指標。它透過這個指標是 WebBrowser 控制項是可以存取方法和屬性。

一旦 WebBrowser 控制項具有容器 IDispatch 的指標,它接著會呼叫以取得方法或屬性在這種情況下從指令碼,yourMethod 呼叫的 DISPID IDispatch::GetIDsOfNames()。

最後,WebBrowser 控制項呼叫之 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 傳回分派識別碼 (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 年,[保留所有的權限]。陳俊銘 Roberts,Microsoft 公司所佔的比重

警告:本文已自動翻譯

內容

文章識別碼: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
意見反應