Information : Accessing the Object Model from dans un contrôle ActiveX

Traductions disponibles Traductions disponibles
Numéro d'article: 172763 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Lorsque vous écrivez un contrôle ActiveX pour Internet, il peut souvent être nécessaire accéder au modèle objet de la page HTML. Le modèle d'objet permet d'accéder à différents éléments dans la page HTML.

Cet article décrit l'accès au modèle d'objets de Visual C++ et de Visual Basic et couvre Internet Explorer (IE) 3.x et 4.0.

Plus d'informations

LE MODÈLE D'OBJET

Informations sur le modèle d'objet se trouvent dans le Kit de développement (SDK) de ActiveX et Internet Client SDK pour Internet Explorer 3.x et 4.0, respectivement. Le modèle objet est documenté comme suit :
   window
      - location
      - frames
      - ...
      - document
         - links
         - forms
            - elements
				
l'objet fenêtre est au niveau supérieur de cette hiérarchie. La fenêtre possède une propriété de document, qui à son tour possède son propre ensemble de propriétés. Pour plus d'informations, consultez le Kit de développement appropriée.

POURQUOI UN CONTRÔLE DOIT ACCÉDER AU MODÈLE D'OBJET ?

Un contrôle peut accéder (et dans certains cas modifier) d'informations sur la page incorporée dans. Pour ce faire, le contrôle doit accéder au modèle objet. Par exemple, un contrôle peut énumérer tous les éléments sur une page. Dans le cas du HTML dynamique, le contrôle peut accéder à presque n'importe quel élément HTML dans la page.

L'ACCÈS AU MODÈLE D'OBJET

Le modèle d'objet est implémenté à l'aide d'automation et des interfaces COM. Une fois que le contrôle est en mesure d'accéder au niveau supérieur du modèle d'objet, puis il peut en détail le modèle d'objet à l'aide d'automation ou des interfaces COM. Cet article décrit les deux étapes :
  1. L'obtention au niveau supérieur du modèle d'objet.
  2. Descente dans le modèle d'objet.

ATTEINDRE LE NIVEAU SUPÉRIEUR DU MODÈLE D'OBJET (VISUAL C++)

À l'aide de IWebBrowserApp (pour Internet Explorer 3.x et 4.x)

IWebBrowserApp est une interface est exposée par le contrôle navigateur Web. Il a une propriété de document (ou d'une méthode de get_document) si l'interface vtable qui autorise l'accès à l'objet automation du document actif. Si le document est un document HTML, l'objet automation possède une propriété de script qui donne à l'objet de fenêtre du modèle d'objet script. Ainsi, pour un contrôle atteindre le modèle d'objet, celui-ci doit être effectuée :

  • Obtenir IWebBrowserApp à partir de la page HTML conteneur.
  • Obtenir la propriété de document de IWebBrowserApp.
  • Obtenez la propriété script du document.
Vous mettra au niveau supérieur (objet window) dans le modèle d'objet. Utiliser automation pour descendre davantage.

Obtention de la IWebBrowserApp

L'obtention de la IWebBrowserApp s'effectue en deux étapes :
  1. Utilisez le pointeur IOleClientSite pour obtenir IServiceProvider. Dans ATL un contrôle, ce pointeur peut être obtenu par l'accès au membre m_spClientSite du contrôle. Dans un contrôle MFC, ce pointeur peut être obtenu en appelant COleControl::GetClientSite(). Le contrôle a accès à l'interface IOleClientSite de son conteneur. Il peut utiliser ce pointeur pour QI pour IServiceProvider :
    pClientSite->QueryInterface(IID_IServiceProvider,
                              (void **)&pISP);
    						
  2. Le IServiceProvider permet d'obtenir IWebBrowserApp. En utilisant le IServiceProvider, un QueryService peut faire pour obtenir la IWebBrowserApp :
          pISP->QueryService(SID_SWebBrowserApp, IID_IWebBrowserApp,
                            (void **)&pIWebBrowserApp));
    						
En outre, si vous êtes programmation pour Internet Explorer 4 ou version ultérieure, vous pouvez obtenir un pointeur vers l'interface IWebBrowser2 du conteneur avec ce code :
   pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
     (void **)&pIWebBrowser2));
				
QueryService est différente de QueryInterface car il n'est pas nécessaire de suivre la règle d'identité dans COM. Ainsi, si l'objet lui-même n'implémente pas IWebBrowserApp, il peut déléguer à l'objet conteneur et de QueryService il pour un IWebBrowserApp.

La propriété de document de IWebBrowserApp Get

IWebBrowserApp est une interface double. Il possède une propriété de document et également une méthode get_Document. Soit peut être utilisée pour obtenir IDispatch du document actif. Une fois que vous avez IDispatch, vous pouvez obtenir la propriété script.

Obtenir la propriété script du document

À l'aide de IDispatch obtenu ci-dessus, la propriété script à l'aide de l'automation. Vous obtiendrez ainsi le niveau supérieur dans le modèle objet de script ou l'objet de fenêtre.

L'OBTENTION DE NIVEAU SUPÉRIEUR DU MODÈLE D'OBJET (VISUAL C++)

(Internet Explorer 4.0 uniquement)

Internet Explorer 4.0 permet l'accès au modèle d'objet beaucoup plus facile. Il s'agit d'un processus en une seule étape :
  1. Permet d'obtenir le IHTMLDocument2 à partir de la IClientSite.

Obtenir IHTMLDocument2 IOleClientSite

Chaque contrôle dispose d'un accès aux IClientSite de son conteneur. QI binaire pour IHTMLDocument2 à partir du site client devrait donner le modèle objet de script.
   IOleContainer* pContainer = NULL;
   IHTMLDocument2* pDoc = NULL;

   pClientSite->GetContainer( &pContainer );
   if ( pContainer != NULL )
      pContainer->QueryInterface( &IID_IHTMLDocument2, &pDoc );
				
Vérifier la valeur de retour à partir de l'appel ci-dessus. Si le contrôle n'est pas incorporé dans une page HTML ou si le conteneur n'est pas Internet Explorer 4.0, l'appel ci-dessus échouera.

L'obtention de IHTMLDocument2 donne l'objet document dans le modèle objet de script. Interfaces de vtable ou interfaces automation peuvent être utilisé pour descendre de niveau le modèle d'objet.

L'OBTENTION DE NIVEAU SUPÉRIEUR DU MODÈLE D'OBJET (VISUAL BASIC)

La propriété parent de l'objet UserControl peut être utilisée pour accéder à l'objet automation. À partir de la documentation de Visual Basic pour la propriété parent, Internet Explorer renvoie un objet dont la propriété script renvoie l'objet IOmWindow.

L'exemple donné dans la documentation de Visual Basic est la suivante :
Parent.Script.get_document.bgColor = "Blue"
				
parent de la propriété obtient à l'objet automation. Puis la propriété script nous donne l'objet de fenêtre du modèle d'objet script. Puis les différentes propriétés et méthodes sont accessibles comme n'importe quel autre objet automation.

La ligne de code ci-dessus doit se présenter comme suit :
Parent.Script.document.bgColor = "Blue"
				
même que l'utilisation get_document est correct dans Internet Explorer 3.x, il ne fonctionneront pas dans Internet Explorer 4.0. La bonne méthode consiste à utiliser la propriété de document. Cela fonctionnera dans Internet Explorer 3.x et 4.0.

LE MODÈLE D'OBJET RECHERCHE VERTICALE

Parcourir de haut en bas du modèle d'objet est aussi simple que l'appel de propriétés et méthodes à l'aide de l'automation. Pour Internet Explorer 3.x, utilisez automation uniquement. Pour Internet Explorer 4.0, les interfaces de vtable peuvent être utilisées. Pour plus d'informations consultez l'exemple driller dans le Kit de développement Internet Client SDK.

Propriétés

Numéro d'article: 172763 - Dernière mise à jour: mercredi 18 juillet 2001 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 Édition 128 bits
  • Microsoft Internet Client Software Development Kit 4.01
Mots-clés : 
kbmt kbfaq kbinfo KB172763 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 172763
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

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