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 :)


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