Microsoft OLE Automation

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 26. september 2016; checks kræver 6 redigeringer .

OLE Automation er en Microsoft -  teknologi , der giver dig adgang til COM-objekter fra scriptsprogsfortolkere, såsom VBScript (i øjeblikket er understøttelse af adgang til OA-objekter tilgængelig i Windows-versioner af alle populære scriptsprog).

Historie

Den dukkede først op omkring 1993 som en erstatning for den forældede DDE_EXECUTE-funktion.

Visual Basic - programmeringsmiljøet var næsten udelukkende baseret på OLE Automation, med datatyper som String og Variant.

Praktisk betydning

OLE Automation-objekter er alle ActiveX-objekter (OCX-objekter). Disse komponenters egenskaber, metoder og hændelser implementeres ved hjælp af OLE Automation.

Også OLE Automation-objekter er mange populære applikationer, såsom Microsoft Office- komponenter . Dette gør det muligt at starte og administrere denne applikation (for eksempel i Excel , oprette en tabel, udfylde cellerne i den og gemme den i en fil) fra et script skrevet i et scriptsprog.

Også OLE Automation-objekter er alle dynamiske HTML-tags (når du bruger Microsoft Trident eller Apple WebKit [skal kontrolleres] eller Google Chrome [skal kontrolleres] ).

Også baseret på denne teknologi er WMI (dets lag, der er ansvarlig for at kommunikere med klientprogrammer) og en række Windows-administrative hjælpeprogrammer, for eksempel, der administrerer IIS -webserveren .

Funktioner

Teknologien definerer de COM-grænseflader, gennem hvilke sprogfortolkeren vil kommunikere med objektet.

Teknologien understøtter:

OLE Automation datatyper (kan bruges i egenskaber, metoder og hændelser):

Andre datatyper (strukturer, ikke-COM-objektpointere, andre repræsentationer af arrays og strenge) understøttes ikke af teknologien.

Teknologien understøtter også typebiblioteker - information om de typer egenskaber/metoder/argumenter, der er tilgængelige ved runtime (noget som Reflection i .NET).

Typisk løser teknologien egenskabs- og metodenavne under kørsel uden at kontrollere dem overhovedet under parsing, og frembringer kun en "objekt understøtter ikke egenskab eller metode"-fejl under kørsel (sen binding). Men hvis objektet har et typebibliotek registreret på maskinen, så er det i nogle udviklingsmiljøer muligt at erklære det på en sådan måde, at navnene vil blive kontrolleret på parsingsstadiet. I Visual Basic blev dette gjort med Dim o As Object (kun sen binding) eller Dim o As Excel.Application (tidlig binding, men kræver, at Excel er installeret på byggemaskinen, og Excel føjes til listen over komponenter, der bruges i projektet).

På niveauet af C/C++ sprog ser et OLE Automation-kald ud som et kald til IDispatch::Invoke, hvor strengnavnene på metoden/egenskaben/argumenterne konverteres til konstanter og værdierne af argumenterne konverteret til OLE Automation-typer er bestået. Dette er ekstremt ubelejligt og forårsager ydeevneomkostninger, så mange objekter har implementeret den såkaldte. dobbeltgrænseflader er efterkommere af IDispatch, der implementerer både Invoke (brugt af scripts og i tilfælde af en As Object-deklaration), nøjagtig den samme funktionalitet gennem almindelige COM-metoder (brugt af C++ og de fortolkere, der forstår dobbeltgrænseflader, som Visual Basic ). Dette bevarer begrænsningen på datatyper ovenfor. ATL - biblioteket indeholder en dobbelt interface-støtteramme.

Microsoft C++ compileren understøtter #import-direktivet - inklusion af et typebibliotek (.tlb eller den eksekverbare fil, som den er indlejret i). Samtidig genereres C++-headere automatisk fra kildefilen ved hjælp af comdef.h-værktøjerne (smart-pointers til COM-objekter osv.).

Objektudviklingscyklus:

Objektkonstruktionscyklus: