OLE Automation är en Microsoft -teknik som låter dig komma åt COM-objekt från skriptspråkstolkar, såsom VBScript (för närvarande finns stöd för åtkomst av OA-objekt tillgängligt i Windows-versioner av alla populära skriptspråk).
Den dök upp först runt 1993 som en ersättning för den föråldrade DDE_EXECUTE-funktionen.
Visual Basic- programmeringsmiljön baserades nästan helt på OLE Automation, med datatyper som String och Variant.
OLE Automation-objekt är alla ActiveX-kontroller (OCX-kontroller). Dessa komponenters egenskaper, metoder och händelser implementeras med OLE Automation.
OLE Automation-objekt är också många populära applikationer som Microsoft Office -komponenter . Detta gör det möjligt att starta och hantera den här applikationen (till exempel i Excel , skapa en tabell programmatiskt, fylla i cellerna i den och spara den i en fil) från ett skript skrivet på ett skriptspråk.
OLE Automation-objekt är också alla dynamiska HTML-taggar (när du använder Microsoft Trident eller Apple WebKit [ska kontrolleras] eller Google Chrome [ska kontrolleras] ).
Baserat på denna teknik är också WMI (dess lager som ansvarar för att kommunicera med klientprogram) och ett antal administrativa Windows-verktyg, till exempel hantering av IIS -webbservern .
Tekniken definierar de COM-gränssnitt genom vilka språktolken kommer att kommunicera med objektet.
Tekniken stöder:
OLE Automation datatyper (kan användas i egenskaper, metoder och händelser):
Andra datatyper (strukturer, icke-COM-objektpekare, andra representationer av arrayer och strängar) stöds inte av tekniken.
Tekniken stöder även typbibliotek – information om vilka typer av egenskaper/metoder/argument som finns tillgängliga vid körning (något som Reflection i .NET).
Tekniken löser vanligtvis egenskaps- och metodnamn vid körning utan att kontrollera dem alls under analys och ger bara upp ett "objekt stöder inte egenskap eller metod"-fel vid körning (sen bindning). Men om objektet har ett typbibliotek registrerat på maskinen, är det i vissa utvecklingsmiljöer möjligt att deklarera det på ett sådant sätt att namnen kommer att kontrolleras i parsningsstadiet. I Visual Basic gjordes detta med Dim o As Object (endast sen bindning) eller Dim o As Excel.Application (tidig bindning, men kräver att Excel är installerat på byggmaskinen och Excel för att läggas till i listan över komponenter som används i projektet).
På nivån för C/C++-språk ser ett OLE Automation-anrop ut som ett anrop till IDispatch::Invoke, där strängnamnen på metoden/egenskapen/argumenten konverteras till konstanter och värdena för argumenten konverteras till OLE Automation-typer är godkända. Detta är extremt obekvämt och orsakar prestandakostnader, så många objekt har implementerat den så kallade. dubbla gränssnitt är ättlingar till IDispatch som implementerar både Invoke (används av skript och i fallet med en As Object-deklaration), exakt samma funktionalitet genom vanliga COM-metoder (används av C ++ och de tolkar som förstår dubbla gränssnitt, som Visual Basic ). Detta behåller begränsningen för datatyper ovan. ATL -biblioteket innehåller ett stödramverk för dubbla gränssnitt .
Microsoft C++-kompilatorn stöder #import-direktivet - inkluderingen av ett typbibliotek (.tlb eller den körbara filen i vilken den är inbäddad). Samtidigt genereras C++-huvuden automatiskt från källfilen med hjälp av verktygen comdef.h (smarta pekare för COM-objekt, etc.).
Objektutvecklingscykel:
Objektkonstruktionscykel: