INFORMACIÓN: El modelo de objetos de en un Control ActiveX de acceso

Seleccione idioma Seleccione idioma
Id. de artículo: 172763 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Al escribir un control ActiveX para Internet, con frecuencia puede ser necesario tener acceso el modelo de objetos de la página HTML. El modelo de objetos permite el acceso a diversos elementos dentro de la página HTML.

En este artículo se describe el acceso al modelo de objetos desde Visual C++ desde Visual Basic y trata Internet Explorer (IE) 3.x y 4.0.

Más información

EL MODELO DE OBJETOS

Documentación para el modelo de objetos puede encontrarse en Kit de desarrollo de software (SDK) de ActiveX y Internet Client SDK para Internet Explorer 3.x y 4.0, respectivamente. El modelo de objetos se documenta como sigue:
   window
      - location
      - frames
      - ...
      - document
         - links
         - forms
            - elements
				
se encuentra el objeto de ventana en el nivel superior de esta jerarquía. La ventana tiene una propiedad de documento, que a su vez tiene su propio conjunto de propiedades. Por favor, consulte el SDK adecuado para obtener más detalles.

¿POR QUÉ UN CONTROL NECESARIO TENER ACCESO AL MODELO DE OBJETOS?

Un control puede tener acceso a (y en algunos casos modificar) información acerca de la página que está incrustado en. Para ello, el control debe tener acceso al modelo de objetos. Por ejemplo, un control puede enumerar todos los elementos en una página. En el caso de HTML dinámico, el control puede tener acceso a casi cualquier elemento HTML en la página.

EL MODELO DE OBJETOS DE ACCESO

El modelo de objetos se implementa mediante las interfaces COM y automatización. Una vez que el control se tenga acceso al nivel superior del modelo de objetos de, puede profundizar el modelo de objeto mediante la automatización o COM interfaces. Este artículo describen los dos pasos:
  1. Obtener el nivel superior del modelo de objetos.
  2. Detalle en el modelo de objetos.

OBTENER EL NIVEL SUPERIOR DEL MODELO DE OBJETOS (VISUAL C++)

Utilizar IWebBrowserApp (para Internet Explorer 3.x y 4.x)

IWebBrowserApp es una interfaz que expone el control del explorador Web. Tiene una propiedad de documento (o método get_document) si utilizando vtable interfaz que permite tener acceso al objeto de automatización del documento activo. Si el documento es un documento HTML, el objeto de automatización tiene una propiedad de secuencia de comandos que proporciona el objeto de ventana del modelo de objeto de secuencias de comandos. Por tanto, para que un control alcanzar el modelo de objetos, debe realizar lo siguiente:

  • Obtener IWebBrowserApp desde su página HTML que contiene.
  • Obtener la propiedad de documento de IWebBrowserApp.
  • Obtenga la propiedad script del documento.
Esto colocará en el nivel superior (objeto window) en el modelo de objetos. Utilizar automatización para profundizar más.

Obtener el IWebBrowserApp

Obteniendo el IWebBrowserApp es un proceso de dos pasos:
  1. Utilice el puntero IOleClientSite para obtener IServiceProvider. En un ATL control, este puntero puede obtener acceso al miembro m_spClientSite del control. En un control de MFC, este puntero puede obtenerse llamando COleControl::GetClientSite(). El control tiene acceso a la interfaz IOleClientSite de su contenedor. Puede utilizar ese puntero a QI para IServiceProvider:
    pClientSite->QueryInterface(IID_IServiceProvider,
                              (void **)&pISP);
    						
  2. Utilice el IServiceProvider para obtener IWebBrowserApp. Mediante el IServiceProvider, un QueryService puede realizarse para obtener el IWebBrowserApp:
          pISP->QueryService(SID_SWebBrowserApp, IID_IWebBrowserApp,
                            (void **)&pIWebBrowserApp));
    						
Además, si va a programación para Internet Explorer 4 o posterior, puede obtener un puntero a la interfaz IWebBrowser2 del contenedor con este código:
   pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
     (void **)&pIWebBrowser2));
				
QueryService es diferente de QueryInterface en que no es necesario que seguir la regla de identidad en COM. Por lo tanto, si el propio objeto no implementa IWebBrowserApp, puede delegar en el objeto de contenedor y QueryService para un IWebBrowserApp.

Obtener la propiedad de documento de IWebBrowserApp

IWebBrowserApp es una interfaz dual. Tiene una propiedad de documento y también un método get_Document. Cualquiera puede utilizarse para obtener el IDispatch del documento activo. Una vez que la interfaz IDispatch, se puede obtener la propiedad de secuencia de comandos.

Obtener la propiedad script del documento

Con la interfaz IDispatch obtenida anteriormente, obtener la propiedad de secuencia de comandos utilizando la automatización. Esto le proporcionará el nivel superior en el modelo de objeto de secuencias de comandos o el objeto de ventana.

OBTENER EL NIVEL SUPERIOR DEL MODELO DE OBJETOS (VISUAL C++)

(Sólo en Internet Explorer 4.0)

Internet Explorer 4.0 hace mucho más fácil el modelo de objetos de acceso. Este es un proceso paso:
  1. Obtener el objeto IHTMLDocument2 desde el IClientSite.

Obtener IHTMLDocument2 de IOleClientSite

Cada control tiene acceso a IClientSite de su contenedor. Para realizar ing para IHTMLDocument2 desde el sitio de cliente debe proporcionar el modelo de objeto de secuencias de comandos.
   IOleContainer* pContainer = NULL;
   IHTMLDocument2* pDoc = NULL;

   pClientSite->GetContainer( &pContainer );
   if ( pContainer != NULL )
      pContainer->QueryInterface( &IID_IHTMLDocument2, &pDoc );
				
comprobar el valor devuelto de la llamada anterior. Si no está incrustado el control dentro de una página HTML, o si el contenedor no es Internet Explorer 4.0, a continuación, la llamada anterior se perderá.

Obtener IHTMLDocument2 proporciona el objeto de documento en el modelo de objeto de secuencias de comandos. A continuación, se pueden utilizar interfaces de vtable o de las interfaces de automatización para profundizar el modelo de objetos.

OBTENER EL NIVEL SUPERIOR DEL MODELO DE OBJETO (VISUAL BASIC)

La propiedad principal del UserControl se puede utilizar para tener acceso el objeto de automatización. De documentación de Visual Basic para la propiedad parent, Internet Explorer devuelve un objeto cuya propiedad script devuelve el objeto IOmWindow.

El ejemplo proporcionado en la documentación de Visual Basic es como sigue:
Parent.Script.get_document.bgColor = "Blue"
				
principal de la propiedad obtiene el objeto de automatización. A continuación, la propiedad de secuencia de comandos ofrece nosotros en el objeto de ventana del modelo de objeto de secuencias de comandos. A continuación, pueden abrirse las distintas propiedades y métodos al igual que cualquier otro objeto de automatización.

La línea de código anterior se leerá como sigue:
Parent.Script.document.bgColor = "Blue"
				
incluso aunque utilizando get_document es correcta en Internet Explorer 3.x, no funcionará en Internet Explorer 4.0. El método correcto es utilizar la propiedad de documento. Esto funcionará tanto en Internet Explorer 3.x y 4.0.

DETALLE EL MODELO DE OBJETOS

Detalle el modelo de objetos es tan sencillo como llamar a las propiedades y métodos mediante automatización. Para Internet Explorer 3.x, utilice sólo automatización. Para Internet Explorer 4.0, se pueden utilizar las interfaces de vtable. Para obtener más información consulte el ejemplo driller de Internet Client SDK.

Propiedades

Id. de artículo: 172763 - Última revisión: miércoles, 18 de julio de 2001 - Versión: 1.0
La información de este artículo se refiere a:
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Client Software Development Kit 4.01
Palabras clave: 
kbmt kbfaq kbinfo KB172763 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): 172763

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