Cómo recuperar la dirección URL de una página Web de un Control ActiveX

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

En esta página

Resumen

Este artículo demuestra cómo un control ActiveX puede recuperar la dirección URL de la página Web (documento) en que se está alojada.

Esto puede resultar útil para restringir el uso de un control ActiveX a un sitio o dominio determinado o tener acceso a archivos cuando proporciona una ruta de acceso relativa.

Más información

Durante la inicialización de un control ActiveX incrustado, Internet Explorer (IE) pasa un puntero a su sitio de cliente por IOleObject::SetClientSite() llamada. Este proceso puede utilizarse para recuperar un moniker para el contenedor o tener acceso el modelo de objetos de documento para recuperar la dirección URL de la página Web que aloja.

En este artículo se muestra cómo recuperar el moniker de contenedor en la dirección URL actual. Para obtener información adicional acerca de cómo obtener la dirección URL desde el modelo de objetos de documento, consulte en contacto con el siguiente artículo en Microsoft Knowledge Base:
172763INFORMACIÓN: El modelo de objetos de en un Control ActiveX de acceso
Siga estos pasos para recuperar el moniker de contenedor en la dirección URL actual:
  1. Obtener al cliente de puntero de interfaz de sitio (IOleClientSite). El contenedor llama a IOleObject::SetClientSite() para pasar un puntero al sitio del cliente. Reemplazar este método para almacenar en caché este puntero.
  2. Obtenga un moniker para el sitio de cliente por IOleClientSite::GetMoniker() llamada.
  3. Llame a IMoniker::GetDisplayName() para obtener la dirección URL para el documento actual.
En el siguiente ejemplo de código muestra cómo realizar los pasos anteriores reemplazando el método IOleObject::SetClientSite() en un control ActiveX ATL (Active Template Library):

Código de ejemplo

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);
}
				

Referencias

Para obtener más información sobre las interfaces IOleObject, IoleClientSite y IOleContainer, consulte la Ayuda en pantalla de Microsoft Visual C++.

(c) 1998 Microsoft Corporation, reservados todos los derechos. Contribuciones por Mark Davis, Microsoft Corporation

Propiedades

Id. de artículo: 181678 - Última revisión: jueves, 15 de julio de 2004 - Versión: 2.3
La información de este artículo se refiere a:
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.5
Palabras clave: 
kbmt kbhowto KB181678 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): 181678
Renuncia a responsabilidad de los contenidos de la KB sobre productos a los que ya no se ofrece asistencia alguna
El presente artículo se escribió para productos para los que Microsoft ya no ofrece soporte técnico. Por tanto, el presente artículo se ofrece "tal cual" y no será actualizado.

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