Obiecte

In AutoIt este posibil si lucrul cu variabile de tip object (obiect).  Pentru acest lucru aveti la dispozitie atat functii native AutoIt cat si un UDF (user-defined functions) cuprinzator. Totusi scopul obiectelor create cu functiile native este diferit de cel al functiilor create cu ajutorul UDF-ului. Vom vorbi despre acest lucru in continuare.

 

  1. Functii native AutoIt pentru lucrul cu obiectele

a)      ObjCreate

Creaza o referinta la un obiect COM (Component Object Model) pentru un classname dat. Functia are 4 parametri: primul este classname care reprezinta clasa obiectului in formatul “nume_aplicatie.tip_obiect”, ultimii 3 parametri (optionali) se refera la numele, username-ul si parola pentru un remote computer (daca vreti sa accesati un obiect pe un computer la distanta).

 

b)     ObjCreateInterface

Creaza o referinta la un obiect COM dintr-o clasa/pointer al unui obiect, identificator  interfetei si un string care descrie obiectul (v-table).

Functia are 4 parametri: CLSID (identificatorul clasei sau pointerul obiectului), IID (identificator  interfetei), sirul de caractere care descrie tabela virtuala a obiectului si ultimul parametru Flag (daca este setat True atunci interfata obiectului mosteneste IUnknown). Functia returneaza un obiect.

Acesta este un exemplu folosind interfata ITaskbarList.

 

c)      ObjEvent

Gestioneaza evenimentele provenite de la obiect. Functia are doua forme (cu 2 sau 3 parametri),  in functie de tipul obiectului. In prima forma cand are 3 parametri, se refera evenimente provenite de la un obiect dat; parametrii fiind: variabila care contine obiectul, prefixul functiilor desemnate pentru a gestiona evenimentele obiectului si optional numele interfetei folosite. In a doua forma cand are 2 parametri, se refera la gestionarea evenimentelor provenite de la obiecte COM in general. Daca are loc orice eroare COM, functia se apeleaza in acesta forma; parametri pentru aceasta forma fiind: un sir de caractere (“AutoIt.Error”)  si optional numele functiei care se va apela in caz de eroare.

Un exemplu folosind prima forma a functiei:

In acest exemplu am creat un obiect InternetExplorer; in cazul in care crearea esueaza apare un mesaj de eroare si se inchide scriptul, in caz contrar se seteaza un hotkey pentru tastele Ctrl+S pentru a schimba starea ferestrei mai tarziu (in vederea captarii acestui mesaj), se seteaza initial ca fereastra sa fie vizibila si se efectueaza actiunea de navigare spre link-ul din imagine. Dupa ce toate acestea sunt efectuate, se apeleaza functia ObjEvent pentru a putea captura evenimente ale obiectului $oIE (mai precis cel de schimbare al starii ferestrei). Apoi totul se desfasoara intr-o bucla infinita pana la apasarea tastelor Ctrl+S, cand se modifica starea ferestrei si implicit este captat acest eveniment si apelata functia Eveniment_OnVisible. In consola va fi afisata starea ferestrei, se distrug obiectele si se iese din script.

Nota: OnVisible este doar unul din evenimentele specificate in interfata DWebBrowserEvents2.

Un exemplu folosind a doua forma a functiei:

Se poate observa ca intentionat am apelat o metoda care nu exista pentru a fi interceptata o eroare COM.

 

d)      ObjGet

Preia o referinta la un obiect COM dintr-un proces existent sau fişier. Functia are 2 parametri: primul este numele fisierului care contine obiectul si al doilea (optional) clasa obiectului. Numele fisierului este optional in cazul in care vreti sa folositi doar clasa obiectului, insa parametrul nu poate fi omis.

e)      ObjName

Returneaza numele sau descrierea interfetei unui obiect. Functia are 2 parametri: variabila care contine obiectul si optional un flag care indica ce fel de date ne intereseaza. Parametrul flag poate avea una din valorile:

1

Numele interfetei folosite (default)

2

Descrierea obiectului (documentului)

3

ProgID-ul (identificator) obiectului

4

DLL-ul cu care s-a creat obiectul (daca suporta)

5

Numele fisierului si pozitia pentru toolbox icon (daca suporta)

 

  1. UDF pentru lucrul cu obiectele

AutoItObject.au3 este un UDF cu ajutorul caruia puteti crea si folosi obiecte AutoItObject. Ca si scop, obiectele create cu acest UDF sunt diferite fata de cele despre care am discutat anterior, functiile din acest UDF sunt create pentru a permite programarea in AutoIt intr-o maniera orientata obiect. UDF-ul a fost creat de Andreas Karlsson (monoceres), Dragana R. (trancexx), Dave Bakker (Kip) si Andreas Bosch (ProgAndy), toti useri ai forumului oficial AutoIt, si a fost lansat sub licenta artistica. UDF-ul este cuprinzator (documentatie in elgeza pentru fiecare functie) si are aproximativ 30 functii, dar in acest tutorial vom vorbi doar despre cateva dintre ele si vom scrie cateva exemple pentru a demonstra usurinta lucrului cu obiecte. Acest UDF il puteti copia de la adresa http://progandy.de/downloads/view.download/3/15.

a)      _AutoItObject_Startup

Initializeaza AutoItObject pentru folosirea functiilor din UDF. Are doar parametri optionali, care specifica daca trebuie incarcat un alt DLL decat cel default. Aceasta functie se foloseste inainte de apelarea oricarei functii din acest UDF.

b)      _AutoItObject_Shutdown

Elibereaza handle-ul DLL-ului folosit. Aeasta functie se apeleaza cand lucrul cu functiile acestui UDF au luat sfarsit. Totusi aceasta functie este optionala.

c)      _AutoItObject_CLSIDFromString

Converteste un sir de caractere intr-o structura CLSID. Ca rezultat va avea o structura in formatul $tagGUID ($tagGUID = “int Data1;short Data2;short Data3;byte Data4[8]“).

d)      _AutoItObject_Class

Aceasta functie este un wrapper care defineste o clasa care permite definitii de metode si proprietati. Functia nu are parametri.

e)      _AutoItObject_Create

Creaza un obiect AutoItObject si optional, daca singurul parametru al functiei ($oParent) este definit atunci, metodele si proprietatile sunt copiate de la obiectul parinte.

f)        _AutoItObject_ObjCreate

Creaza o referinta la un obiect COM. Functia are 3 parametri: primul reprezinta identificatorul obiectului (CLSID sau ProgID) iar ultimii 2 (optionali) sunt un sir de caractere care reprezinta identificatorul interfetei (default IDispatch) si un sir de caractere care defineste metodele interfetei.

g)      _AutoItObject_AddMethod

Adauga o metoda la un obiect AutoItObject. Functia are 4 parametri: primul reprezinta obiectul AutoItObject, al doilea este numele metodei, al treilea este functia corespunzatoare metodei si ultimul (optional) specifica daca functia este sau nu privata (default = False).

Nota: primul parametru al functiei corespunzatoare unei metode totdeauna este o referinta la acel obiect.

h)      _AutoItObject_AddProperty

Adauga o proprietate la un obiect AutoItObject. Functia are 4 parametri: primul reprezinta obiectul AutoItObject, al doilea este numele proprietatii, al treilea parametru este un indicator (poate avea una din valorile $ELSCOPE_PUBLIC, $ELSCOPE_READONLY sau $ELSCOPE_PRIVATE) iar ultimul parametru (optional) este o valoare pentru proprietate (default este nicio valoare).

i)        _AutoItObject_AddDestructor

Adauga un destructor la un obiect AutoItObject. Functia are 2 parametri: obiectul AutoItObject si un sir de caractere care reprezinta functia corespunzatoare destructorului.

j)        _AutoItObject_RemoveMember

Elimina o proprietate sau metoda dintr-un obiect AutoItObject. Functia are 2 parametri: obiectul AutoItObject si numele membrului care trebuie eliminat.

k)      _AutoItObject_DllOpen

Creaza un obiect asociat cu un DLL. Functia are 3 parametri: primul este un sir de caractere reprezentand numele DLL-ului iar ultimii 2 parametri (optionali) se refera la modul de afisare a rezultatului respectiv modul de de incarcare a DLL-ului.

 

Exemple diverse folosind functii din AutoItObject.au3:

a) Crearea unei clase

b) Crearea unui obiect (cu metode si proprietati ale unei clase)

c) Crearea unei obiect asociat cu kernel32.dll si folosirea acestuia


* Pentru orice intrebari sau nelamuriri legate de curs sau limbajul AutoIt accesati sectiunea AutoIt a forumului SkullBox sau platforma de suport tehnic NetHelp.