Cómo métodos y propiedades de acceso del contenedor de script

Seleccione idioma Seleccione idioma
Id. de artículo: 188015 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

Resumen

Cuando se aloja el control WebBrowser en una aplicación de Visual C++, puede ser necesario tener acceso a métodos o propiedades del contenedor de secuencia de comandos en una página Web. En este artículo se describe cómo hacer esto implementando la interfaz IDocHostUIHandler.

Más información

Al implementar la interfaz IDocHostUIHandler, puede controlar muchas de las características de interfaz de usuario del control WebBrowser en la aplicación host. IDocHostUIHandler también permite ampliar el modelo de objetos HTML dinámico (DHTML) para tener acceso los métodos y propiedades del contenedor de secuencia de comandos.

El método GetExternal() de IDocHostUIHandler proporciona esta funcionalidad. Cuando secuencia de comandos en una página Web llama "window.external.yourMethod", el control de WebBrowser llama a su método GetExternal para recuperar un puntero a la interfaz IDispatch de la aplicación host. Es a través de este puntero que el control WebBrowser es capaz de tener acceso a los métodos y propiedades.

Una vez que el control WebBrowser tiene un puntero a la interfaz IDispatch del contenedor, a continuación, llama a IDispatch::GetIDsOfNames() para obtener el DISPID del método o propiedad denominada de secuencia de comandos, yourMethod en este caso.

Por último, las llamadas de control de WebBrowser IDispatch::Invoke() con el identificador de envío (DISPID) se recuperan de GetIDsOfNames().

Aquí son los pasos que debe seguir para ampliar el modelo de objetos DHTML para poder acceso al contenedor métodos y propiedades de secuencia de comandos:
  1. Implementar IDocHostUIHandler.
  2. Implemente el método IDocHostUIHandler::GetExternal. Establecer la interfaz IDispatch como parámetro para que el contenedor:
    STDMETHOD(GetExternal)(IDispatch** ppDispatch)
    {
       // Assumes you inherit from IDispatch
       *ppDispatch = (IDispatch*)this;
       (*ppDispatch)->AddRef();
    
       return S_OK;
    }
    					
  3. Devolver el identificador (DISPID) del método o propiedad de envío de GetIDsOfNames. Si ha agregado el método o propiedad utilizando a un asistente, esto se realizará por usted.
  4. Implementar el DISPID de su método o propiedad en su implementación de IDispatch:: Invoke así:
    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. Llaman a un método o una propiedad del contenedor de secuencia de comandos como ésta:
     <SCRIPT LANGUAGE="VBScript">
        Sub SomeControl_OnClick
           window.external.yourMethod
        End Sub
     </SCRIPT>
    					

Referencias

Para obtener más información sobre las tecnologías tratadas en este artículo, consulte la documentación sobre interfaces de alojamiento avanzada y IDocHostUIHandler en MSDN Online Web Workshop:
http://msdn.microsoft.com/workshop/
(c) 1998 Microsoft Corporation, reservados todos los derechos. Contribuciones por Scott Roberts, Microsoft Corporation

Propiedades

Id. de artículo: 188015 - Última revisión: viernes, 7 de febrero de 2014 - Versión: 2.1
La información de este artículo se refiere a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Service Pack 1 de Microsoft Internet Explorer 4.01
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
Palabras clave: 
kbnosurvey kbarchive kbmt kbfaq kbhowto kbscript kbwebbrowser KB188015 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 188015

Enviar comentarios

 

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