Comment faire pour récupérer l'URL d'une Page Web à partir d'un contrôle ActiveX

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

Sommaire

Résumé

Cet article explique comment un contrôle ActiveX pouvez extraire l'URL (Uniform Resource Locator) de la page Web (document) sur lequel il est hébergé.

Cela peut être utile pour restreindre l'utilisation d'un contrôle ActiveX à un site/domaine particulier ou de l'accès aux fichiers lorsque fourni un chemin d'accès relatif.

Plus d'informations

Pendant l'initialisation d'un contrôle ActiveX incorporé, Internet Explorer (IE) passe un pointeur vers son site client en appelant IOleObject::SetClientSite(). Ce processus peut servir à récupérer un moniker pour le conteneur ou à accéder au modèle d'objet document pour récupérer l'URL de la page Web hôte.

Cet article montre comment récupérer l'URL actuelle à partir du moniker de conteneur. Pour plus d'informations sur la façon d'obtenir l'URL à partir du modèle d'objet document, consultez l'article suivant dans la base de connaissances Microsoft :
172763Information : Accessing the Object Model from dans un contrôle ActiveX
Procédez comme suit pour extraire l'URL actuelle le moniker de conteneur :
  1. Obtenir le client de pointeur d'interface de site (IOleClientSite). Le conteneur appelle IOleObject::SetClientSite() pour passer un pointeur vers le site client. Substituez cette méthode pour mettre en cache ce pointeur.
  2. Obtenir un moniker sur le site client en appelant IOleClientSite::GetMoniker().
  3. Appelez IMoniker::GetDisplayName() pour obtenir l'URL pour le document actif.
L'exemple de code suivant montre comment effectuer les étapes ci-dessus en substituant la méthode IOleObject::SetClientSite() dans un contrôle ActiveX ATL (Active Template Library) :

Exemple de code

STDMETHOD(SetClientSite)(IOleClientSite *pClientSite)
{
   if (pClientSite != NULL)
   {
      // Obtain URL from container moniker.
      CComPtr<IMoniker> spmk;
      LPOLESTR pszDisplayName;

      if (SUCCEEDED(pClientSite->GetMoniker(
                                    OLEGETMONIKER_TEMPFORUSER,
                                    OLEWHICHMK_CONTAINER,
                                    &spmk)))
      {
         if (SUCCEEDED(spmk->GetDisplayName(
                                 NULL, NULL, &pszDisplayName)))
         {
            USES_CONVERSION;

            CComBSTR bstrURL;
            bstrURL = pszDisplayName;

            ATLTRACE("The current URL is %s\n", OLE2T(bstrURL));
            CoTaskMemFree((LPVOID)pszDisplayName);
         }
      }
   }

   return IOleObject_SetClientSite(pClientSite);
}
				

Références

Pour plus d'informations sur les interfaces IOleObject IoleClientSite et IOleContainer, reportez-vous à l'aide en ligne de Microsoft Visual C++.

(c) 1998 Microsoft Corporation, tous droits réservés. Contribution de Mark Davis, Microsoft Corporation

Propriétés

Numéro d'article: 181678 - Dernière mise à jour: jeudi 15 juillet 2004 - Version: 2.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 Édition 128 bits
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
Mots-clés : 
kbmt kbhowto KB181678 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: 181678
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.
Exclusion de responsabilité concernant les contenus obsolètes dans la Base de connaissances
Cet article concerne des produits pour lesquels Microsoft n'offre plus de support. Il est par conséquent fourni « en l'état » et ne sera plus mis à jour.

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