Interactiunea cu scriptul

ConsoleWrite, MsgBox si InputBox sunt trei functii care permit interactiunea utilizatorului cu programul (daca nu cream o interfata grafica). ConsoleWrite si MsgBox sunt pentru afisare si InputBox pentru intrare. Ne vom folosi de acestea pentru a incepe sa scriem primul script.

 

 1. ConsoleWrite()

Aceasta functie scrie date in fluxul STDOUT, mai concret in consola. Functia are un singur parametru si anume datele care dorim sa fie scrise in consola. Functia va returna volumul de date scrise; daca se scriu date binare va returna numarul de bytes scrisi; daca se scrie text va returna numarul de caractere scrise.

Apasati tasta F5 pentru a rula scriptul si in consola va aparea textul “Hello world!”, ca in imaginea de mai jos. Note:

@CRLF este un macro, vom reveni asupra lui intr-o lectie viitoare, pentru moment tot ce trebuie sa stiti e ca am folosit acest macro pentru a scrie in consola dupa textul “Hello world!” pe o alta linie.

Aceasta functie nu scrie date in consola DOS daca scriptul nu este compilat ca si CUI. Acest lucru se poate face adaugand directiva Change2CUI.

 

Apasati tasta F7 (Tools->Build) si scriptul se va compila in folderul curent. Ca sa testati scriptul compilat (Start->Run->CMD) scrieti numele executabilului in fereastra DOS, ca in exemplul de mai jos.

 

2. MsgBox()

Aceasta functie afiseaza un text intr-un message box. Parametrii functiei sunt:

  • flag – indica tipul messagebox-ului si posibilele combinatii ale butoanelor.
  • title – titlul message box-ului
  • text – textul care vrem sa fie afisat
  • timeout – timpul (in secunde) dupa care se inchide automat message box-ul in cazul in care userul nu actioneaza in vreun fel. Acest parametru este optional. Valoarea default este 0, ceea ce inseamna ca nu se inchide pana la o actiune a userului.
  • hwnd – handle-ul unei ferestre parinte. Acest parametru este optional.

 

Functia MsgBox() va returna ID-ul butonului apasat.

Butonul apasat

ID

OK

1

CANCEL

2

ABORT

3

RETRY

4

IGNORE

5

YES

6

NO

7

TRY AGAIN **

10

CONTINUE **

11

 

Parametrul flag poate fi o combinatie a urmatoarelor valori:

Flag

Referitor la tipul butoanelor

0

OK

1

OK and Cancel

2

Abort, Retry, and Ignore

3

Yes, No, and Cancel

4

Yes and No

5

Retry and Cancel

6 **

Cancel, Try Again, Continue

Flag

Referitor la tipul icon-ului

0

(Fara icon)

16

Stop-sign icon

32

Question-mark icon

48

Exclamation-point icon

64

Information-sign icon

Flag

Referitor la butonul default

0

Primul buton este default

256

Al doilea buton este default

512

Al treilea buton este default

Flag

Referitor la mod

0

Application

4096

System modal

8192

Task modal

Flag

Referitor la diverse atribute

0

(Nimic special)

262144

Atributul top-most este setat

524288

Titlul si textul sunt right-justified

** Valid doar pe Windows 2000/XP sau versiuni superioare.

Exemplu:

Se poate observa ca in acest exemplu am omis ultimul parametru (hwnd) care este optional. De asemenea se poate observa ca valorile parametrului flag se pot combina prin simpla operatie de adunare. Daca apasati tasta F5 pentru a rula acest script o sa va apara un message-box ca in imaginea de mai jos.

Pentru a intelege mai bine parametrul flag incercati diferite combinatii de valori pentru acest parametru. Daca nu interactionati cu message box-ul in 10 secunde se va inchide automat (consecinta a parametrului timeout). Daca apasati butonul Yes in consola va apare ID-ul butonului apasat (vezi tabelul cu ID-urile) si anume 6; daca apasati butonul No in consola va apare 7. In cazul in care message box-ul se inchide ca o consecinta a parametrului timeout, functia MsgBox() va returna valoarea -1.

In acest exemplu eu am apasat butonul Yes, ID-ul butonului apasat scris in consola este 6. Pentru moment e suficient daca stiti atat despre ID-urile butoanelor, in lectiile viitoare vom invata si cum sa le folosim.

Nota: $raspuns este o variabila, pentru moment trebuie sa stiti ca o variabila este un loc in memorie unde puteti sa stocati date. In acest caz am stocat valoarea returnata de functia MsgBox() si anume ID-ul butonului apasat. Mai detaliat vom vorbi despre variabile in lectiile urmatoare.

 

3. InputBox()

Aceasta functie ii cere userului sa introduca un sir de caractere. Parametrii functiei sunt:

  • title – titlul input box-ului
  • prompt – un mesaj care sa ii indice userului ce ar trebui sa scrie in input box
  • default – valoarea default cu care apare input box-ul (optional)
  • password char – un caracter care sa inlocuiasca caracterele in cazul in care vrem sa scriem o parola in input box, se lasa valoarea default (un empty string) daca nu doriti sa scrieti o parola (optional)
  • width – latimea input box-ului; valoarea default este 250 pixeli; valoarea minima este aproximativ 190 pixeli (optional)
  • height – inaltimea input box-ului; valoarea default este 190 pixeli; valoarea minima este aproximativ 115 pixeli (optional)
  • left – coordonata X fata de marginea din stanga la care va aparea input box-ul; default este centrata pe mijlocul ecranului (optional)
  • right – coordonata Y fata de marginea de sus la care va aparea input box-ul; default este centrata pe mijlocul ecranului (optional)
  • timeout – timpul (in secunde) dupa care se inchide automat input box-ul in cazul in care userul nu actioneaza in vreun fel (optional)
  • hwnd – handle-ul unei ferestre parinte (optional)

Functia InputBox() va returna sirul de caractere introdus de utilizator. In cazul in care intervine o eroare, functia va returna un empty string.

Unii parametri va sunt cunoscuti, fiind identici cu cei din functia MsgBox(), nu o sa stam mult timp asupra lor.

Exemplu:

Observati ca nu am folosit toti parametrii functiei, doar primii doi fiind obligatorii. In cazul de mai sus am folosit parametrii titlu, prompt, default si password char. Primii doi parametri nu ar trebui sa puna vreo problema. Pentru parametrul default am lasat un empty string (vom discuta in lectiile viitoare ce inseamna), ceea ce inseamna ca nu va fi afisata o valoare predefinita in input box. Pentru parametrul password char am folosit cuvantul cheie Default (vezi lectia Cuvinte cheie) care va seta valoarea default a parametrului si anume un empty string, cu alte cuvinte nu avem nevoie sa inlocuiasca caracterele cu unul predefinit.

Daca apasati tasta F5 pentru a rula scriptul o sa va apara un input box ca si cel de mai jos.

Daca apasati butonul OK fara a introduce niciun caracter sau apasati butonul close (X), va fi interpretat ca un caz de eroare, valoarea returnata fiind un empty string. In caz contrar va aparea un message box cu textul introdus, ca in exemplul de mai jos.

In acest exemplu eu am folosit numele Andy, in message box-urile voastre va aparea ceea ce ati introdus in input box.

Note:

Sirul de caractere returnat de functia InputBox() nu poate fi mai lung de 254 caractere. Daca textul introdus contine carriage returns (caracterul ASCII 13) sau line feed (caracterul ASCII 10) atunci textul va fi trunchiat la prima aparitie a acestor caractere.

In mod normal primul caracter al parametrului password char va fi folosit pentru a desemna masca dar se poate folosi o combinatie de caractere pentru a specifica diverse optiuni: deci primul caracter va desemna masca, in cazul in care scriem o parola sau se foloseste SPACE, daca nu se doreste o masca pentru parola, un al doilea caracter al parametrului password(optional) va fi litera M (mandatory – care va obliga sa introduceti cel putin un caracter pentru a putea apasa butonul OK), urmat de un numar pentru a restrictiona intrarea la un numar de caractere dorit (optional).

Daca rulati scriptul din exemplul de mai sus, se poate observa ca daca nu introduceti cel putin un caracter in input box, butonul OK nu reactioneaza iar numarul de caractere care se pot introduce este limitat la 11.


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