Artigo: 257717 - Última revisão: quinta-feira, 11 de Maio de 2006 - Revisão: 3.0

Como obter a interface IWebBrowser2 nível superior de um controlo ActiveX

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Expandir tudo | Reduzir tudo

Sumário

O artigo base de dados de conhecimento da Microsoft
172763  (http://support.microsoft.com/kb/172763/EN-US/ ) INFO: Aceder ao modelo de objectos a partir de um controlo ActiveX
Explica como obter a referência IWebBrowser2 da janela de anfitrião de um controlo ActiveX. No entanto, o que os programadores, na realidade, quer é uma referência para IWebBrowser2 superior, uma que contém o próprio conjunto de frames. Isto pode ser útil se pretender que chame o comando statusText(), por exemplo definir o valor da caixa de estado de janela antes da página foi carregada. Uma vez que esta propriedade não funciona com o controlo WebBrowser, efectuar a chamada é IWebBrowser2 da frame incorporada resulta num erro.

Mais Informação

Para obter a referência IWebBrowser2 nível superior, obter IServiceProvider do site do cliente e efectuar um QueryService IID_IServiceProvider no serviço SID_STopLevelBrowser (definido no Shlguid.h). A partir de IServiceProvider esta segunda, execute um QueryService para IID_IWebBrowser2 no serviço de SID_SWebBrowserApp.

O melhor local para executar este trabalho é no método SetClientSite() de IOleObject:
#include <SHLGUID.h>

#define COMRELEASE(ptr)\ 
	if (ptr != NULL) {\ 
		ptr->Release();\ 
		ptr = NULL;\	
	}

IWebBrowser2 *browser = NULL;

STDMETHODIMP SetClientSite(IOleClientSite *pClientSite) 
{
	HRESULT hr = S_OK;
	IServiceProvider *isp, *isp2 = NULL;
	if (!pClientSite)
	{
		COMRELEASE(browser);
	}  
	else
	{
		hr = pClientSite->QueryInterface(IID_IServiceProvider, reinterpret_cast<void **>(&isp));
		if (FAILED(hr)) 
		{
			hr = S_OK;
			goto cleanup;
		}
		hr = isp->QueryService(SID_STopLevelBrowser, IID_IServiceProvider, reinterpret_cast<void **>(&isp2));
		if (FAILED(hr))
		{
			hr = S_OK;
			goto cleanup;
		}
		hr = isp2->QueryService(SID_SWebBrowserApp, IID_IWebBrowser2, reinterpret_cast<void **>(&browser));
		if (FAILED(hr)) 
		{
			hr = S_OK;
			goto cleanup;
		}
	cleanup:
		// Free resources.
		COMRELEASE(isp);
		COMRELEASE(isp2);
		return hr;
	}
}
				

Referências

Para obter informações adicionais, clique no número de artigo existente abaixo para visualizar o artigo na base de dados de conhecimento da Microsoft:
172763  (http://support.microsoft.com/kb/172763/EN-US/ ) INFO: Aceder ao modelo de objectos a partir de um controlo ActiveX
Para obter mais informações sobre como desenvolver soluções baseadas na Web para o Microsoft Internet Explorer, visite os seguintes Web sites da Microsoft:
http://msdn.microsoft.com/ie/ (http://msdn.microsoft.com/ie/)

http://support.microsoft.com/iep (http://support.microsoft.com/iep)

A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 5.01
  • Microsoft Internet Explorer 5.5
Palavras-chave: 
kbmt kbctrl kbhowto KB257717 KbMtpt
Tradução automáticaTraduçã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: 257717  (http://support.microsoft.com/kb/257717/en-us/ )
Retired KB ArticleExclusã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.