Să mai programăm cu AutoIt!


Până acum am făcut o scurtă prezentare a programului (de scris programe) AutoIt3 (AutoIt: dă-i comenzi), apoi am văzut cum putem scrie un prim program, nu cel mai uşor (AutoIt3: să începem să programăm!). Mai recent am văzut ce uşor putem scrie câteva linii de cod care să ne ajute dacă de exemplu suntem webmasteri (Notepad++ şi AutoIt3). Acum e timpul să mergem mai departe. Prima oară cu ceva simplu, ceva ce eu folosesc. Am scris un mic program (3 linii de cod) şi care la mine se lansează cu Win+Alt+L. Ce face el? Îl folosesc din Word, dar în orice program aş fi el face astfel: 1) pune în clipboard textul marcat; 2) din clipboard într-o variabilă; 3) lansează o pagină web căutând cuvântul în dicţionarul de pe Hallo.ro.

[PHP]Send(„^c”)
$clip = ClipGet()
Run(‘C:\…\chrome.exe „http://hallo.ro/search.do?d=en&l=ro&type=both&query=’ & $clip & ‘”‘)[/PHP]

Evident acest program poate fi modificat (pe lângă că în loc de … trebuie să puneţi calea spre navigatorul Dvs favorit) pentru a face căutare pe Google, într-un alt dicţionar sau ce operaţiune doriţi Dvs pe web. Cum eu caut frecvent pe Hallo.ro îmi este de folos acest mic program.

Dar vă invit acum să vedem ceva mai complex. Un cod de nici 100 de linii. Dacă vă sperie 100 de linii atunci probabil nu aveţi mare experienţă în programare. Veţi vedea însă că este uşor. Mă rog, relativ uşor. Totul ţine de experienţa Dvs în programare. Dacă de exemplu ştiţi să scrieţi cod PHP atunci veţi înţelege şi codul următor. Oricum, după el voi explica linie cu linie (aproape). Am căutat să scriu un cod care să fie util dar şi educativ: veţi vedea că el oferă mai multe baze – cum creăm o fereastră, cum îi punem un meniu, cum îi asociem o iconiţă în systray care de asemenea are un meniu. E un exemplu complex şi simplu. Uitaţi-vă la cod ce „subţire” e.

Ce ar urma el să facă? Să afişeze o fereastră care are un meniu. Meniul permite să aflăm Despre program şi să Ieşim din el. Punct. În fereastră mai sunt patru butoane ce fac: Notepad lansează notepad.exe; Command lansează cmd.exe; CNet.ro lansează în Chrome pagina noastră web; Google lansează, evident, pagina Google. Vrem ca acest program să ne fie la îndemână, dar nici să nu ne încurce. Vrem să dispară deci când nu avem nevoie de el şi cu o combinaţie de taste să apară. În rest să stea cuminte în systray.

Să vedem deci codul. După el explicaţiile.

[PHP]#include
#include

Opt(„TrayMenuMode”,1)

HotKeySet(„{ESCAPE}”, „Ascunde”)
HotKeySet(„!g”, „Arata”)
HotKeySet(„!1”, „LanseazaNotepad”)
HotKeySet(„!d”, „Despre”) ;Shift-d
HotKeySet(„^x”, „Iesire”) ;Ctrl-x

$hWnd = GUICreate(„Scurtaturi”,230,110,-1,-1, -1,BitOR($WS_EX_TOPMOST,$WS_EX_TOOLWINDOW))
$Notepad = GUICtrlCreateButton(„Notepad”, 45, 20, 70, 20)
$Command = GUICtrlCreateButton(„Command”, 120, 20, 70, 20)
$CNet = GUICtrlCreateButton(„CNet.ro”, 45, 50, 70, 20)
$Google = GUICtrlCreateButton(„Google”, 120, 50, 70, 20)
$Meniu = GUICtrlCreateMenu(„&Meniu”)
$MeniuDespre = GUICtrlCreateMenuItem(„&Despre”, $Meniu)
GUICtrlCreateMenuItem(„”, $Meniu)
$MeniuIesire = GUICtrlCreateMenuItem(„I&esire”, $Meniu)
GUISetState()

$TrayAfisare = TrayCreateItem(„Afisare”)
$TrayIesire = TrayCreateItem(„Iesire”)
TraySetIcon(„Shell32.dll”,25)
TraySetState()

While 1
If ControlGetFocus(„Scurtaturi”) = „” Then
Ascunde()
EndIf
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Ascunde()
Case $MeniuDespre
Despre()
Case $MeniuIesire
ExitLoop
Case $Notepad
Lanseaza(„notepad”)
Case $Command
Lanseaza(„cmd”)
Case $CNet
Deschide(„www.cnet.ro”)
Case $Google
Deschide(„www.google.ro”)
Case Else
EndSwitch
$Msg = TrayGetMsg()
Switch $Msg
Case $TrayIesire
ExitLoop
Case $TrayAfisare
Arata()
Case Else
EndSwitch
WEnd

Func Arata()
GUISetState(@SW_SHOW,$hWnd)
EndFunc

Func Ascunde()
GUISetState(@SW_HIDE,$hWnd)
EndFunc

Func Despre()
MsgBox(4096,””,”Acesta este un program mic, micutz.”)
EndFunc

Func Lanseaza($ce)
Run($ce)
EndFunc

Func LanseazaNotepad()
Lanseaza(„notepad”)
EndFunc

Func Deschide($ce)
GUISetState(@SW_HIDE,$hWnd)
Run(‘C:\Users\Radu\AppData\Local\Google\Chrome\Application\chrome.exe „http://’ & $ce & ‘”‘)
EndFunc

Func Iesire()
Exit
EndFunc[/PHP]

Primele linii permit să folosim nişte constante (în loc să folosim valorile lor). Linia 4 indică faptul că vom avea un meniu la iconiţa din systray, şi încă un meniu definit de noi (fără părţile implicite). De la 6 la 10 definim scurtături din taste. Vrem ca la Escape aplicaţia să dispară (se ascunde de fapt, rămânând accesibilă din systray). Cu Alt+G vrem aplicaţia să fie afişată (dacă era ascunsă). Cu Alt+1 vrem să lanseze prima aplicaţie (Notepad) – şi similar putem defini scurtături pentru tot ce dorim (reţineţi ! e pentru ALT, ^ e pentru CTRL, + e pentru SHIFT, iar # e pentru WIN). Inutil şi demonstrativ am pus apoi ALT+D pentru afişarea mesajului Despre. În fine, ca să ieşim uşor am definit pentru CTRL+X ieşirea din program.

Mergem mai departe. Definim fereastra. Un nume, dimensiuni, parametrii default (-1) şi apoi nişte informaţii de stil despre fereastră. În principiu am cerut ca fereastra să fie afişată peste orice altceva (topmost) şi să nu apară în ALT+TAB sau în bara de aplicaţii. Apoi am creat în fereastră patru butoane (liniile 13-16). Apoi am creat meniul (liniile 17-20). Linia 19 pune un separator în meniu. Cum totul e pregătit putem afişa fereastra cu linia 21. Apoi m-am ocupat de systray. Am făcut un meniu cu două opţiuni: Afişare şi Ieşire. În linia 25 am setat iconiţa iar în linia următoare am afişat aplicaţia în systray.

Ajungem astfel la motorul central al aproape oricărei aplicaţii cu AutoIt: o buclă infinită (while 1). Primul If (29-31) verifică dacă fereastra are focusul – dacă nu o ascunde. De ce? Păi nu vrem fereastra să ne stea în cale. E activă şi am dat click în altă fereastră: fereastra noastră să dispară, să fie ascunsă! Apoi în linia 32 interceptăm mesajele GUI (de la interfaţa grafică, de la fereastră). Dacă vrem să o închidem… o ascundem. Liniile care urmează în Switch se explică singure. În linia 50 interceptăm mesajele din systray. Urmează un alt Switch care se explică de la sine.

În ambele Switch-uri am apelat nişte funcţii care trebuie evident definite. Funcţiile sunt însă aşa intuitive încât nu are sens să explic. La Arata() arătăm fereastra – normal! Cu o singură excepţie toate funcţiile sunt de o linie (aproape că nu se justifică să fie funcţii, dar de dragul clarităţii am apelat la această soluţie). Atât! Iată acum un cod pe care îl puteţi modifica pentru a vă lansa aplicaţiile favorite sau paginile favorite. Atenţie: la aplicaţii cel mai bine este să lucraţi cu calea completă, iar la pagini web nu uitaţi să puneţi navigatorul favorit cu calea lui. Am pus nişte cărămizi importante: ferestre, butoane, meniuri, systray! Cu curaj mergeţi mai departe.

Programul scris mai sus îl vedeţi în acţiune mai jos. Partea cu cmd.exe nu s-a înregistrat prea bine, dar de mers a mers bine.


Apreciază articolul:

1 stea2 stea3 stea4 stea5 stea (2 evaluări, media: 5,00 din 5)
Loading...Loading...

0 comentarii


Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile necesare sunt marcate *