INFO: Toegang tot het objectmodel van binnen een ActiveX-besturingselement

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 172763 - Bekijk de producten waarop dit artikel van toepassing is.
Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

Bij het schrijven van een ActiveX-besturingselement voor Internet, vaak mogelijk toegang tot het objectmodel van de HTML-pagina. Het objectmodel toegang verschillende elementen van de HTML-pagina.

In dit artikel worden de toegang tot het objectmodel van Visual C++ en Visual Basic en heeft betrekking op Internet Explorer (IE) 3. x en 4. 0.

Meer informatie

HET OBJECTMODEL

Documentatie voor het objectmodel kan worden gevonden in het ActiveX-Software Development Kit (SDK) en de internetclient SDK voor Internet Explorer 3. x en 4. 0, respectievelijk. Het objectmodel wordt als volgt beschreven:
   window
      - location
      - frames
      - ...
      - document
         - links
         - forms
            - elements
				
Het object window wordt op het hoogste niveau van deze hiërarchie. Het venster bevat een document eigenschap die op zijn beurt een eigen set eigenschappen heeft. Neem Raadpleeg de desbetreffende SDK voor meer informatie.

WAAROM MOET EEN BESTURINGS ELEMENT VOOR TOEGANG TOT HET OBJECTMODEL

Een besturings element kunt openen (en in sommige gevallen wijzigen) informatie over de pagina dat is ingesloten in. Hiervoor moet het besturings element toegang krijgen tot het objectmodel. Zo kan een besturings element inventariseren alle elementen op een pagina. In de geval van dynamische HTML-code, het besturings element toegankelijk is voor vrijwel elk HTML-element in de pagina.

TOEGANG TOT HET OBJECTMODEL

Het objectmodel is geïmplementeerd met behulp van automatisering en COM-interfaces. Eenmaal het besturings element is het hoogste niveau van het objectmodel, dat vervolgens toegang tot het objectmodel via automatisering of COM-interfaces kunt inzoomen. Dit artikel bespreekt beide stappen uit:
  1. Ophalen op het hoogste niveau van het objectmodel.
  2. Inzoomen in het objectmodel.

TOT HET HOOGSTE NIVEAU VAN HET OBJECTMODEL (VISUAL C++)

Met behulp van IWebBrowserApp (voor Internet Explorer 3. x en 4. x)

IWebBrowserApp is een interface die weer door het besturings element webbrowser gegeven wordt. Heeft een eigenschap van het document (of get_document methode als vtable Interface) waarmee de toegang tot het automatiseringsobject van het actieve document. Als het document een HTML-document en vervolgens het automatiseringsobject heeft een eigenschap script waarmee het window-object van het script object model. Dus voor een besturings element voor het bereiken van het objectmodel, moeten de volgende gedaan:

  • IWebBrowserApp ophalen met de HTML-pagina.
  • De document eigenschap van IWebBrowserApp krijgen.
  • De eigenschap script van het document ophalen.
Dit zal u plaatsen op het hoogste niveau (window-object) in het objectmodel. Vervolgens automatisering gebruiken om een drilldownbewerking verder.

De IWebBrowserApp verkrijgen

Ophalen van de IWebBrowserApp is een proces van twee stappen:
  1. Gebruik de aanwijzer IOleClientSite IServiceProvider ophalen. In een ATL besturings element deze aanwijzer kunt verkrijgen via het m_spClientSite lid van het besturings element. Deze aanwijzer in een MFC-besturingselement worden verkregen door het aanroepen van COleControl::GetClientSite(). Het besturings element heeft toegang tot de IOleClientSite-interface van de container. Deze aanwijzer QI kan gebruiken voor IServiceProvider:
    pClientSite->QueryInterface(IID_IServiceProvider,
                              (void **)&pISP);
    						
  2. Gebruik de IServiceProvider IWebBrowserApp verkrijgen. Met behulp van de IServiceProvider, een QueryService kan worden gedaan om de IWebBrowserApp:
          pISP->QueryService(SID_SWebBrowserApp, IID_IWebBrowserApp,
                            (void **)&pIWebBrowserApp));
    						
Bovendien bent u programmeren voor Internet Explorer 4 of hoger, kunt u een verwijzing naar de interface kan IWebBrowser2 van de container met dit verkrijgen code:
   pISP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2,
     (void **)&pIWebBrowser2));
				
QueryService verschilt van QueryInterface dat niet te hoeft Voer de regel identiteit in COM. Dus, als het object zelf niet implementatie van IWebBrowserApp, het kunt overdragen aan het object en QueryService voor een IWebBrowserApp.

De Document eigenschap van IWebBrowserApp

IWebBrowserApp is een dual interface. Een document eigenschap heeft en ook een get_Document-methode. Ofwel kan worden gebruikt om de IDispatch van de actieve document. Zodra u het IDispatch vervolgens kan de eigenschap script verkregen.

De eigenschap Script van het Document ophalen

Met de IDispatch hierboven verkregen, krijgt het script eigenschappen gebruiken automatisering. Hierdoor krijgt het bovenste niveau in het script objectmodel, of het object window.

OPHALEN VAN HET HOOGSTE NIVEAU VAN HET OBJECTMODEL (VISUAL C++)

(Alleen in Internet Explorer 4. 0)

Internet Explorer 4. 0 kunt u toegang krijgen tot het objectmodel van veel gemakkelijker. Dit is een proces van één stap:
  1. Het IHTMLDocument2 ophalen uit de IClientSite.

IHTMLDocument2 verkrijgen van IOleClientSite

Elk besturings element heeft toegang tot IClientSite van de container. QI-ning voor IHTMLDocument2 vanaf de client site geeft het script objectmodel.
   IOleContainer* pContainer = NULL;
   IHTMLDocument2* pDoc = NULL;

   pClientSite->GetContainer( &pContainer );
   if ( pContainer != NULL )
      pContainer->QueryInterface( &IID_IHTMLDocument2, &pDoc );
				
Controleer of de retour waarde van de bovenstaande oproep. Als het besturings element is niet ingesloten binnen een HTML-pagina, of als de container niet Internet Explorer 4. 0 en vervolgens de bovenstaande oproep mislukt.

Het document-object resulteert ophalen IHTMLDocument2 in het script object model. Automatiseringsinterfaces of interfaces vtable gebruikt het objectmodel lager.

OPHALEN VAN HET HOOGSTE NIVEAU VAN HET OBJECTMODEL (VISUAL BASIC)

De eigenschap parent van de UserControl kan worden gebruikt voor toegang tot de automatisering object. Vanuit de Visual Basic-documentatie voor de eigenschap parent Internet Explorer een object retourneert waarvan Script eigenschap retourneert de IOmWindow-object.

Het gegeven voorbeeld in Visual Basic-documentatie is als volgt:
Parent.Script.get_document.bgColor = "Blue"
				
De eigenschap Parent wordt het automatiseringsobject. Vervolgens de eigenschap script biedt ons het window-object van het objectmodel van script. De verschillende eigenschappen en methoden kunnen worden benaderd als een andere automatiseringsobject.

De bovenstaande code regel moet als volgt gelezen:
Parent.Script.document.bgColor = "Blue"
				
Hoewel met behulp van get_document in Internet Explorer 3. x juist is, zal niet werken in Internet Explorer 4. 0. De juiste methode te gebruiken is de de eigenschap document. Dit werkt zowel in Internet Explorer 3. x en 4. 0.

HET OBJECTMODEL INZOOMEN

Het objectmodel Inzoomen is net zo eenvoudig als het aanroepen van de eigenschappen en methoden met behulp van automatisering. Internet Explorer 3. x alleen automatisering gebruiken. Voor Internet Explorer 4. 0 worden vtable-interfaces gebruikt. Voor meer informatie gegevens verwijzen naar het monster driller in de Internet Client SDK.

Eigenschappen

Artikel ID: 172763 - Laatste beoordeling: vrijdag 25 februari 2011 - Wijziging: 2.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Internet Client SDK 4.01
Trefwoorden: 
kbDSupport kbFAQ kbinfo kbmt KB172763 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:172763

Geef ons feedback

 

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