Como recuperar a URL de uma página da Web de um controle ActiveX

Traduções de Artigos Traduções de Artigos
Artigo: 181678
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como um controle ActiveX pode recuperar o uniforme Resource Locator (URL) da página da Web (documento) no qual ele está sendo hospedado.

Isso pode ser útil para restringir o uso de um controle ActiveX para um determinado domínio/site ou acessar arquivos quando fornecido um caminho relativo.

Mais Informação

Durante a inicialização de um controle ActiveX incorporado, o Internet Explorer (IE) passa um ponteiro para o site do cliente chamando IOleObject::SetClientSite(). Esse processo pode ser usado para qualquer recuperar um o identificador de origem para o recipiente ou o modelo de objeto de documento para recuperar acesso a URL para a página da Web de hospedagem.

Este artigo demonstra como recuperar a URL atual a partir do moniker do recipiente. Para obter informações adicionais sobre como obter o URL a partir do modelo de objeto de documento, consulte o seguinte artigo na Base de dados de Conhecimento da Microsoft:
172763 INFO: Acessando o modelo de objeto de dentro de um ActiveX Controle
Siga estas etapas para recuperar a URL atual do moniker do contêiner:
  1. Obter o cliente de ponteiro de interface de site (IOleClientSite). O recipiente chama o IOleObject::SetClientSite() para passar um ponteiro para o site do cliente. Substitua esse método para armazenar em cache o ponteiro.
  2. Obter um identificador de origem para o site do cliente chamando IOleClientSite::GetMoniker().
  3. Chamada IMoniker::GetDisplayName() para obter a URL atual documento.
O exemplo de código a seguir demonstra como executar as etapas acima substituindo o método de IOleObject::SetClientSite() em um modelo ativo Controle de ActiveX Library (ATL):

Código de exemplo

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

Referências

Para obter mais informações sobre o IOleObject, IoleClientSite e IOleContainer interfaces, consulte a Ajuda online do Microsoft Visual C++.

(c) Microsoft Corporation 1998, todos os direitos reservados. Contribuições por marca Davis, Microsoft Corporation

Propriedades

Artigo: 181678 - Última revisão: 29 de março de 2013 - Revisão: 6.0
Palavras-chave: 
kbhowto kbmt KB181678 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 181678
Exclusão de Responsabilidade para Conteúdo sem Suporte na KB
Este artigo foi escrito sobre produtos para os quais a Microsoft já não fornece suporte. Por conseguinte, este artigo é oferecido "tal como está" e deixará de ser actualizado.

Submeter comentários

 

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