Como obter o URL de uma página Web a partir de um controlo ActiveX

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.
Sumário
Este artigo demonstra como um controlo ActiveX pode obter o localizador de UniformResource (URL) da página Web (documento) em que é beinghosted.

Isto pode ser útil para restringir a utilização de um controlo ActiveX aparticular domínio/site ou aceder a ficheiros quando fornecido um caminho relativo.
Mais Informação
Durante a inicialização de um controlo ActiveX incorporado, Internet Explorer(IE) transmite um ponteiro para o site de cliente por callingIOleObject::SetClientSite(). Este processo pode ser utilizado para obter amoniker para o contentor ou o modelo de objecto de documento para o URL de retrievethe para a página Web anfitrião de acesso.

Este artigo demonstra como obter o URL actual do moniker de thecontainer. Para obter informações adicionais sobre como obter o URL do modelo de objecto de thedocument, consulte o seguinte artigo na Microsoft Knowledge Base:
172763 INFORMAÇÕES: O modelo de objecto a partir de um controlo ActiveX de aceder
Siga estes passos para obter o URL actual a partir do moniker do contentor:
  1. O cliente obter apontador de interface do site (IOleClientSite). O contentor chama IOleObject::SetClientSite() passar um apontador para o site do cliente. Substitua este método para colocar em cache este ponteiro.
  2. Obter um moniker para o site de cliente por chamada IOleClientSite::GetMoniker().
  3. Chame IMoniker::GetDisplayName() para obter o URL para o documento actual.
O código de exemplo seguinte demonstra como efectuar o byoverriding de passos que precede o método de IOleObject::SetClientSite() num controlo ActiveX do Active TemplateLibrary (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 mais informações sobre o objecto IOLE, IoleClientSite e IOleContainerinterfaces, consulte a ajuda online do Microsoft Visual C++.

(c) Microsoft Corporation 1998, todos os direitos reservados. Contribuições de MarkDavis, Microsoft Corporation

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 181678 - Última Revisão: 11/22/2015 08:56:00 - Revisão: 7.0

  • kbhowto kbmt KB181678 KbMtpt
Comentários