Microsoft OLE Automation

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 26. syyskuuta 2016 tarkistetusta versiosta . tarkastukset vaativat 6 muokkausta .

OLE Automation on Microsoftin  tekniikka , jonka avulla voit käyttää COM-objekteja komentosarjakielen tulkkeista, kuten VBScriptistä (tällä hetkellä tuki OA-objektien käyttämiselle on saatavilla kaikkien Windows-versioiden suositut skriptikielet).

Historia

Se ilmestyi ensimmäisen kerran noin vuonna 1993 korvaamaan vanhentuneen DDE_EXECUTE-ominaisuuden.

Visual Basic -ohjelmointiympäristö perustui lähes kokonaan OLE Automationiin tietotyypeillä, kuten String ja Variant.

Käytännön merkitys

OLE Automation -objektit ovat kaikki ActiveX-komponentteja (OCX-komponentteja). Näiden komponenttien ominaisuudet, menetelmät ja tapahtumat on toteutettu OLE Automationilla.

Myös OLE Automation -objektit ovat monia suosittuja sovelluksia, kuten Microsoft Office -komponentteja . Tämä mahdollistaa tämän sovelluksen käynnistämisen ja hallinnan (esimerkiksi Excelissä , luoda ohjelmallisesti taulukko, täyttää sen solut ja tallentaa sen tiedostoon) komentosarjakielellä kirjoitetusta skriptistä.

Myös OLE Automation -objektit ovat kaikki dynaamisia HTML-tageja (käytettäessä Microsoft Trident tai Apple WebKit [tarkistettava] tai Google Chrome [tarkistettava] ).

Tähän tekniikkaan perustuu myös WMI (sen kerros, joka vastaa kommunikaatiosta asiakasohjelmien kanssa) ja joukko Windowsin hallintaapuohjelmia, esimerkiksi IIS -verkkopalvelimen hallinta .

Ominaisuudet

Tekniikka määrittelee ne COM-rajapinnat, joiden kautta kielentulkki kommunikoi kohteen kanssa.

Tekniikka tukee:

OLE Automation -tietotyypit (voidaan käyttää ominaisuuksissa, menetelmissä ja tapahtumissa):

Tekniikka ei tue muita tietotyyppejä (rakenteita, ei-COM-objektiosoittimia, muita taulukoiden ja merkkijonojen esityksiä).

Tekniikka tukee myös tyyppikirjastoja - tietoja ominaisuuksien / menetelmien / argumenttien tyypeistä, jotka ovat käytettävissä suorituksen aikana (jotain kuten Reflection in .NET).

Tyypillisesti tekniikka ratkaisee ominaisuuksien ja menetelmien nimet ajon aikana tarkistamatta niitä ollenkaan jäsentämisen aikana ja aiheuttaa vain "objekti ei tue ominaisuutta tai menetelmää" -virheen ajon aikana (myöhäinen sidonta). Jos objektilla on kuitenkin koneelle rekisteröity tyyppikirjasto, niin joissain kehitysympäristöissä se on mahdollista deklaroida niin, että nimet tarkistetaan jäsennysvaiheessa. Visual Basicissa tämä tehtiin Dim o As Object -sovelluksella (vain myöhäinen sidonta) tai Dim o As Excel.Application -ohjelmalla (varhainen sidonta, mutta vaatii Excelin asentamisen rakennuskoneeseen ja Excelin lisäämisen sovelluksessa käytettyjen komponenttien luetteloon). projekti).

C/C++-kielten tasolla OLE Automation -kutsu näyttää kutsulta IDispatch::Invoke:lle, jossa menetelmän/omaisuuden/argumenttien merkkijononimet muunnetaan vakioiksi ja argumenttien arvot muunnetaan OLE-automaatiotyypeiksi. ohitetaan. Tämä on erittäin hankalaa ja aiheuttaa suorituskustannuksia, joten monet kohteet ovat toteuttaneet ns. kaksoisrajapinnat ovat IDispatchin jälkeläisiä, jotka toteuttavat sekä Invoken (jota käyttävät skriptit ja As Object -määrityksen tapauksessa), täsmälleen samat toiminnot tavallisilla COM-menetelmillä (jota käyttävät C ++ ja tulkit, jotka ymmärtävät kaksoisrajapintoja, kuten Visual Basic ). Tämä säilyttää yllä olevien tietotyyppien rajoituksen. ATL - kirjasto sisältää kaksoisrajapinnan tukikehyksen.

Microsoft C++ -kääntäjä tukee #import-direktiiviä - tyyppikirjaston (.tlb tai suoritettava tiedosto, johon se on upotettu) sisällyttämistä. Samaan aikaan C++-otsikot luodaan automaattisesti lähdetiedostosta comdef.h-työkaluilla (smart-osoittimet COM-objekteille jne.).

Objektin kehityssykli:

Objektin rakennussykli: