INFO: Acessar o modelo de objeto de dentro de um controle ActiveX

Traduções deste artigo Traduções deste artigo
ID do artigo: 172763 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Ao escrever um controle ActiveX para a Internet, ele geralmente pode ser necessário acessar o modelo de objeto da página HTML. O modelo de objeto permite o acesso a vários elementos dentro da página HTML.

Este artigo discute acessando o modelo de objeto do Visual C++ e a partir do Visual Basic e aborda o Internet Explorer (IE) 3.x e 4.0.

Mais Informações

O MODELO DE OBJETO

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

POR QUE UM CONTROLE NECESSÁRIO ACESSAR O MODELO DE OBJETO?

Um controle pode acessar (e em alguns casos modificar) informações sobre a página que está incorporado no. Para fazer isso, o controle deve acessar o modelo de objeto. Por exemplo, um controle pode enumerar todos os elementos em uma página. No caso de HTML dinâmico, o controle pode acessar praticamente qualquer elemento HTML na página.

ACESSANDO O MODELO DE OBJETO

O modelo de objeto é implementado usando interfaces COM e automação. Depois que o controle for capaz de acessar o nível superior do modelo de objeto, ele pode aprofundar o modelo de objeto usando automação ou interfaces COM. Este artigo aborda as duas etapas:
  1. Recebendo o nível superior do modelo de objeto.
  2. Aprofundar no modelo de objeto.

CONHECENDO O NÍVEL SUPERIOR DO MODELO DE OBJETO (VISUAL C++)

Usando IWebBrowserApp (para Internet Explorer 3.x e 4.x)

IWebBrowserApp é uma interface que é exposta pelo controle de navegador da Web. Tiver uma propriedade de documento (ou método get_document) se usando vtable interface que permite o acesso ao objeto de automação do documento ativo. Se o documento for um documento HTML, em seguida, o objeto de automação tem uma propriedade script que fornece o objeto de janela do modelo de objeto script. Portanto, para um controle acessar o modelo de objeto, deve ser feito o seguinte:

  • Obtenha sua página HTML contendo IWebBrowserApp.
  • Obtenha a propriedade de documento do IWebBrowserApp.
  • Obtenha a propriedade script do documento.
Isso colocará no nível superior (objeto window) no modelo de objeto. Use automação para aprofundar mais.

Obtendo o IWebBrowserApp

Obter o IWebBrowserApp é um processo de duas etapas:
  1. Use o ponteiro IOleClientSite para obter IServiceProvider. Em um ATL controle, esse ponteiro pode ser obtido acessando o membro m_spClientSite o controle. Em um controle MFC, esse ponteiro pode ser obtido chamando COleControl::GetClientSite(). O controle tem acesso à interface IOleClientSite de seu recipiente. Ele pode usar esse ponteiro para QI para IServiceProvider:
    pClientSite->QueryInterface(IID_IServiceProvider,
                              (void **)&pISP);
    						
  2. Use o IServiceProvider para obter IWebBrowserApp. Usando o IServiceProvider, um QueryService pode ser feito para obter o IWebBrowserApp:
          pISP->QueryService(SID_SWebBrowserApp, IID_IWebBrowserApp,
                            (void **)&pIWebBrowserApp));
    						
Além disso, se você estiver programação para Internet Explorer 4 ou posterior, você pode obter um ponteiro para a interface IWebBrowser2 do contêiner com este código:
   pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
     (void **)&pIWebBrowser2));
				
QueryService é diferente do QueryInterface, ele não tem siga a regra de identidade no COM. Portanto, se o próprio objeto não implementa IWebBrowserApp, ele pode delegar a contendo objeto de QueryService-lo para um IWebBrowserApp.

Obter a propriedade de documento de IWebBrowserApp

IWebBrowserApp é uma interface dupla. Ele possui uma propriedade de documento e também um método get_Document. Ou pode ser usado para obter o IDispatch do documento ativo. Depois de ter o IDispatch, a propriedade de script pode ser obtida.

Obter a propriedade de scripts do documento

Usando o IDispatch obtido acima, obter a propriedade de script usando automação. Isso dará o nível superior no modelo de objeto script ou o objeto da janela.

OBTENÇÃO DE NÍVEL SUPERIOR DO MODELO DE OBJETO (VISUAL C++)

(Somente Internet Explorer 4.0)

Internet Explorer 4.0 torna acessando o modelo de objeto muito mais fácil. Este é um processo de uma etapa:
  1. Obter o IHTMLDocument2 o IClientSite.

Obtendo IHTMLDocument2 de IOleClientSite

Cada controle tem acesso a IClientSite de seu recipiente. QI-vel para IHTMLDocument2 do site do cliente deve fornecer o modelo de objeto script.
   IOleContainer* pContainer = NULL;
   IHTMLDocument2* pDoc = NULL;

   pClientSite->GetContainer( &pContainer );
   if ( pContainer != NULL )
      pContainer->QueryInterface( &IID_IHTMLDocument2, &pDoc );
				
verificar o valor de retorno de chamada acima. Se o controle não está incorporado dentro de uma página HTML, ou se o recipiente não for Internet Explorer 4.0, a chamada acima falhará.

Obter IHTMLDocument2 retorna o objeto de documento no modelo de objeto script. Em seguida, em interfaces de automação ou vtable interfaces podem ser usados para analisar o modelo de objeto.

OBTENÇÃO DE NÍVEL SUPERIOR DO MODELO DE OBJETO (VISUAL BASIC)

A propriedade pai do UserControl pode ser usada para acessar o objeto de automação. De documentação do Visual Basic para a propriedade pai, o Internet Explorer retorna um objeto cuja propriedade script retorna o objeto IOmWindow.

O exemplo fornecido na documentação do Visual Basic é da seguinte maneira:
Parent.Script.get_document.bgColor = "Blue"
				
obtém a propriedade Parent O para o objeto de automação. Em seguida, a propriedade de script nos fornece o objeto de janela do modelo de objeto script. Em seguida, diferentes propriedades e métodos podem ser acessados apenas como qualquer outro objeto de automação.

Linha de código acima deve ler da seguinte maneira:
Parent.Script.document.bgColor = "Blue"
				
Embora usar get_document está correta no Internet Explorer 3.x, ele não funcionará no Internet Explorer 4.0. O método correto é usar a propriedade de documento. Isso funcionará no Internet Explorer 3.x e 4.0.

APROFUNDAR O MODELO DE OBJETO

Aprofundar o modelo de objeto é tão simples quanto chamar as propriedades e métodos usando automação. Para Internet Explorer 3.x, use a automação apenas. Para Internet Explorer 4.0, vtable interfaces podem ser usadas. Para obter mais informações consulte o exemplo driller no SDK do cliente de Internet.

Propriedades

ID do artigo: 172763 - Última revisão: quarta-feira, 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 Edição de 128 Bits
  • 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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