INFO: Aceder ao modelo de objectos a partir de um controlo ActiveX

Traduções de Artigos Traduções de Artigos
Artigo: 172763 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Quando escrever um controlo ActiveX para a Internet, muitas vezes, poderá ser necessário aceder o modelo de objectos da página HTML. O modelo de objecto permite o acesso a vários elementos numa página HTML.

Este artigo aborda a aceder ao modelo de objectos do Visual C++ e do Visual Basic e abrange o Internet Explorer (IE) 3.x e 4.0.

Mais Informação

O MODELO DE OBJECTO

Documentação para o modelo de objecto pode ser encontrada em ActiveX Software Development Kit (SDK) e o SDK do cliente de Internet para o Internet Explorer 3.x e 4.0, respectivamente. O modelo de objectos está documentado, da seguinte forma:
   window
      - location
      - frames
      - ...
      - document
         - links
         - forms
            - elements
				
o objecto da janela está no nível superior desta hierarquia. A janela tem uma propriedade de documento, que por sua vez tem seu próprio conjunto de propriedades. Consulte o SDK adequado para mais detalhes.

POR QUE RAZÃO DEVE UM CONTROLO NECESSITAR DE ACEDER O MODELO DE OBJECTOS?

Um controlo pode aceder (e em alguns casos modificar) informações sobre a página que está incorporada no. Para tal, o controlo tem de aceder o modelo de objecto. Por exemplo, um controlo pode enumerar todos os elementos numa página. No caso de HTML dinâmico, o controlo pode aceder a quase qualquer elemento HTML na página.

ACEDER AO MODELO DE OBJECTO

O modelo de objecto é implementado utilizando automatização e interfaces COM. Depois de ter acesso a nível superior do modelo de objectos no controlo, em seguida, pode pesquisar para baixo o modelo de objecto utilizando automatização ou COM interfaces. Este artigo explica os dois passos:
  1. Obter o nível superior de modelo de objecto.
  2. Pormenorizar para o modelo de objecto.

OBTER O NÍVEL SUPERIOR DE MODELO DE OBJECTO (VISUAL C++)

Utilizando IWebBrowserApp (para o Internet Explorer 3.x e 4.x)

IWebBrowserApp é uma interface é exposta pelo controlo do Web Browser. Tem uma propriedade do documento (ou get_document método) se utilizar vtable interface que permite o acesso ao objecto de automatização do documento activo. Se o documento for um documento HTML, o objecto de automatização tem uma propriedade de script que dá ao objecto janela do modelo de objecto de script. Por isso, para um controlo alcançar o modelo de objectos, deve ser feito o seguinte:

  • Obter IWebBrowserApp da respectiva página HTML que contém.
  • Obter propriedade de documento de IWebBrowserApp.
  • Obter a propriedade de script do documento.
Isto vai colocar, no nível superior (janela objecto) no modelo de objecto. Utilize a automatização para pormenorizar mais.

Como obter o IWebBrowserApp

Obter o IWebBrowserApp é um processo composto por dois passos:
  1. Utilize o ponteiro IOleClientSite obter IServiceProvider. Num ATL controlo, é possível obter este ponteiro acedendo o membro m_spClientSite do controlo. Num controlo MFC, é possível obter este ponteiro chamando COleControl::GetClientSite(). O controlo tem acesso à interface IOleClientSite do respectivo contentor. Pode utilizar esse ponteiro para QI para IServiceProvider:
    pClientSite->QueryInterface(IID_IServiceProvider,
                              (void **)&pISP);
    						
  2. Utilize o IServiceProvider para obter IWebBrowserApp. Utilizar o IServiceProvider, um QueryService pode ser feito para obter o IWebBrowserApp:
          pISP->QueryService(SID_SWebBrowserApp, IID_IWebBrowserApp,
                            (void **)&pIWebBrowserApp));
    						
Além disso, se programação para o Internet Explorer 4 ou posterior, pode obter um apontador para a interface IWebBrowser2 do contentor com este código:
   pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
     (void **)&pIWebBrowser2));
				
QueryService é diferente de QueryInterface em que não tem a seguir a regra de identidade de COM. Deste modo, se o próprio objecto não implementa IWebBrowserApp,-pode delegar o objecto contentor e QueryService-lo para um IWebBrowserApp.

Obter a propriedade de documento de IWebBrowserApp

IWebBrowserApp é uma interface dupla. Tem uma propriedade do documento e também um método get_Document. Um pode ser utilizado para obter IDispatch do documento activo. Quando tiver IDispatch, em seguida, é possível obter a propriedade de script.

Obter a propriedade de script do documento

Utilizar IDispatch obtido acima, obtenha a propriedade de script utilizando a automatização. Isso dará o nível superior no modelo de objecto scripts ou o objecto da janela.

OBTER O NÍVEL SUPERIOR DE MODELO DE OBJECTO (VISUAL C++)

(Apenas Internet Explorer 4.0)

Internet Explorer 4.0 permite aceder ao modelo de objectos muito mais fácil. Este é um processo de um só passo:
  1. Obter o IHTMLDocument2 do IClientSite.

Obter IHTMLDocument2 de IOleClientSite

Cada controlo tem acesso a IClientSite do respectivo recipiente. Ar QI para IHTMLDocument2 do site do cliente deve conceder o modelo de objecto scripts.
   IOleContainer* pContainer = NULL;
   IHTMLDocument2* pDoc = NULL;

   pClientSite->GetContainer( &pContainer );
   if ( pContainer != NULL )
      pContainer->QueryInterface( &IID_IHTMLDocument2, &pDoc );
				
Verifique o valor devolvido da chamada acima. Se o controlo não é incorporado uma página HTML ou se o contentor não for Internet Explorer 4.0, em seguida, a acima chamada falhará.

Obter IHTMLDocument2 fornece o objecto de documento no modelo de objecto de script. Em seguida, em interfaces de automatização ou interfaces vtable podem ser utilizadas para pesquisar para baixo o modelo de objecto.

OBTER O NÍVEL SUPERIOR DE MODELO DE OBJECTO (BÁSICO VISUAL)

A propriedade principal do UserControl pode ser utilizada para aceder o objecto de automatização. A partir da documentação do Visual Basic para a propriedade principal, o Internet Explorer devolve um objecto cuja propriedade script devolve o objecto IOmWindow.

O exemplo indicado na documentação do Visual Basic é o seguinte:
Parent.Script.get_document.bgColor = "Blue"
				
propriedade Parent O obtém ao objecto de automatização. Em seguida, a propriedade de script dá-no janela objecto do modelo de objecto de script. Em seguida, os métodos e propriedades diferentes podem ser acedidos tal como qualquer outro objecto de automatização.

A linha acima do código deve ler da seguinte forma:
Parent.Script.document.bgColor = "Blue"
				
mesmo que utilizar get_document estiver correcto no Internet Explorer 3.x, não vai funcionar no Internet Explorer 4.0. O método correcto é utilizar a propriedade de documento. Isto funciona tanto no Internet Explorer 3.x e 4.0.

PORMENORIZAR O MODELO DE OBJECTO

Pormenorizar o modelo de objecto é tão fácil como ligar as propriedades e métodos utilizando a automatização. Para Internet Explorer 3.x, utilize apenas a automatização. Para o Internet Explorer 4.0, podem ser utilizadas vtable interfaces. Para mais informações consulte o exemplo driller no Internet Client SDK.

Propriedades

Artigo: 172763 - Última revisão: 18 de julho de 2001 - Revisão: 1.0
A informação contida neste artigo aplica-se a:
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Client Software Development Kit 4.01
Palavras-chave: 
kbmt kbfaq kbinfo KB172763 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: 172763

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