Author Archive

System tray

In AutoIt se poat face multe tipuri de aplicatii, limbajul fiind suficient pentru majoritatea aplicatiilor pe care un programator le poate face pentru uz propriu sau pentru un grup restrans de oameni. De exemplu, in AutoIt se pot crea usor si rapid aplicatii care verifica disponibilitatea unui serviciu sau aplicatii care ruleaza taskuri administrative cum ar fi crearea de copii de siguranta sau stergerea fisierelor temporare. Pentru taskuri de acest gen e foarte util ca aplicatia sa ruleze in System Tray, de unde o putem apela rapid.

Pentru a lucra cu System Tray avem nevoie de functiile TrayCreateItem(), TrayGetMsg() si TraySetState(). Cu TrayCreateItem() vom crea elementele unui meniu care va apare cand dam click pe iconita din System Tray. TrayGetMsg() ne va spune pe care element al meniului am dat click iar cu TraySetState() vom pastra iconita in System Tray (optional, o putem ascunde sau o putem face sa apara si sa dispara intermitent).

Un exemplu de aplicatie care ruleaza in System Tray avem mai jos:

Opt("TrayMenuMode",1);
 
$action = TrayCreateItem("Click me! Click me!");
TrayCreateItem("");
$exit   = TrayCreateItem("Exit");
TraySetIcon("warning");
TraySetToolTip("Click aici!");
TraySetState(1);
 
While 1
	$msg = TrayGetMsg()
	Select
		Case $msg = 0
			ContinueLoop
		Case $msg = $action
			MsgBox(0, "Click!", "Ai clickuit :-)")
		Case $msg = $exit
			ExitLoop
	EndSelect
WEnd

Cu TrayCreateItem() am creat doua elemente ale meniului, $action si $exit, fiecare cu un text propriu. Am folosit TraySetIcon() pentru a pune o iconita personalizata si TraySetToolTip() pentru a crea un tooltip cand suntem cu mouseul deasupra iconitei, dar aceste functii nu sunt necesare. Cu TraySetState(1); i-am spus interpretorului ca iconita trebuie afisata – daca parametrul functiei era 2 iconita disparea iar daca era 4 iconita aparea si disparea intermitent.

In bucla While citim rezultatul functiei TrayGetMsg() care ne spune care element al meniului a fost actionat, iar folosind Case putem initia diverse actiuni in functie de elementul selectat din meniu.

Ca sa ne amuzam putin putem scrie urmatorul cod:

Opt("TrayMenuMode",1);
 
$shutdown = TrayCreateItem("Shut down");
$logout   = TrayCreateItem("Log out");
TrayCreateItem("");
$exit     = TrayCreateItem("Exit");
TraySetIcon("warning");
TraySetToolTip("Click aici!");
TraySetState(1);
 
While 1
	$msg = TrayGetMsg()
	Select
		Case $msg = 0
			ContinueLoop
		Case $msg = $shutdown
			Shutdown(1);
		Case $msg = $logout
			Shutdown(0);
		Case $msg = $exit
			ExitLoop
	EndSelect
WEnd

Acum vom avea trei elemente in meniu: “Shut down“, “Log out” si “Exit“. Elementul “Exit” e la fel ca in varianta anterioara. Diferenta apara la cele doua elemente, “Shut down” si “Log out“, care la click vor apela functia Shutdown() cu parametrul 1 pentru oprirea sistemului respectiv 0 pentru deautentificare.

Daca doriti sa testati al doilea cod, nu uitati sa salvati orice fisier deschis pentru ca toata informatia nesalvata va fi pierduta 🙂

Hello world!

Ca in orice alt limbaj, si in AutoIt e bine sa incepem cu afisarea unui text simplu: “Hello, world!“. Chiar daca nu are o utilitate deosebita ne va ajuta sa vedem cum se creaza un script simplu in AutoIt, cum putem afisa un mesaj si cum putem compila un script pentru a-l transforma intr-un executabil (.exe). Pentru a pune tutorialul in practica trebuie sa aveti instalate AutoIt si SciTE4AutoIt.

Pentru inceput vom crea un fisier intr-un folder oarecare si ii vom da un nume sugestiv (ex. HelloWorld.au3):

Fisier pe care il vom edita folosind SciTE4AutoIt:

Editorul va introduce automat urmatoarele linii:

#cs ----------------------------------------------------------------------------
 
 AutoIt Version: 3.3.6.1
 Author:         myName
 
 Script Function:
	Template AutoIt script.
 
#ce ----------------------------------------------------------------------------
 
; Script Start - Add your code below here

Sunt comentarii pe care le putem sterge sau le putem modifica dupa bunul plac. Pentru a afisa mesajul “Hello, world!” vom adauga imediat dupa comentarii urmatoarea linie:

MsgBox(0, "Titlu", "Hello, world!");

Salvam fisierul (Ctrl+S) si il rulam (F5). Rezultatul va fi o fereastra mica cu un buton “OK“, generata de functia MsgBox, fereastra care ne va afisa mesajul: “Hello, world!“.

Observam ca al doilea parametru al functie MsgBox, “Titlu“, este textul care apare in titlul ferestrei generate iar al treilea parametru, “Hello, world!” este textul afisat in fereastra. Primul parametru poate fi modificat daca dorim si alte butoane in afara de “OK” – de exemplu 1 pentru “OK” si “Cancel“.

Urmatorul pas ar fi compilarea scriptului pentru a avea un fisier executabil. In fereastra SciTE4AutoIt apasam Ctrl+F7. Se deschide o fereastra in care putem modifica parametri de compilare:

Odata ce apasam “Compile Script” se va genera un fisier executabil pe care il putem rula:

Acum ca am scris prima aplicatie in AutoIt, am invatat cateva lucruri noi:

  • de ce avem nevoie pentru a programa in AutoIt;
  • cum se creaza si modifica un script;
  • cum se adauga comentarii in AutoIt;
  • cum afisam un mesaj in AutoIt;
  • cum rulam si compilam un script facut in AutoIt.

Acum ne mai trebuie doar idei de programe pe care sa le scriem in AutoIt 🙂