AutoIt: împotriva repetiţiilor


Dacă veţi căuta autoit pe acest sit veţi găsi câteva articole, nu prea multe, dedicate excelentului program AutoIt. Acesta permite în primul rând automatizarea sarcinilor repetitive, dar poate fi folosit şi pentru a scrie mici programe, chiar cu interfaţă grafică (GUI). În fine… nu repet cele spuse prin alte articole. Aş vrea doar să mai dau un exemplu. Am văzut că ultimele actualizări au inclus semnături de autenticitate pentru executabile, aşa că falsele alarme de viruşi cred că nu mai apar acum (ele cred că i-au ţinut pe unii deoparte). V-am arătat acum un an cum se face un meniu plutitor, dar cred că mulţi s-au oprit la avertismentele antiviruşilor.

imagine

Bun. Gata cu introducerea. Să vedem un exemplu practic. Dvs adaptaţi la nevoile Dvs. Pe mine mă interesa ca, având o imagine, să o am cât mai rapid scalată la 150 pixeli lăţime şi pusă o bordură (margine) de 1 pixel, neagră. Am în Paint Shop Pro o sarcină automatizată pentru aşa ceva, dar de ce să lansez PSP pentru o sarcină aşa mică? (În paranteză fie spus, aceste imagini îmi trebuie la Catholica.ro, unde fiecare ştire are o imagine de 150 pixeli lăţime plus marginea neagră.) M-am gândit să încerc cu IrfanView care, faţă de PSP, se lansează instant (deci câştig timp). Decupez deci în IrfanView ce îmi trebuie şi apoi… dintr-o apăsare de taste vreau să se facă tot restul procesului. Iată codul!

[PHP]Send("!{TAB}")
WinWait("IrfanView")
If Not WinActive("IrfanView") Then WinActivate("IrfanView")
Send("^r")
WinWaitActive("Resize/Resample image")
Send("150")
Send("!o")
WinWaitActive("IrfanView")
Send("^e")
Send("{ENTER}")
WinWaitActive("IrfanView")
Send("+v")
Send("{ENTER}")
WinWaitActive("IrfanView")
Send("s")
WinWaitActive("Save Picture As …")
Sleep(1000)
Send("i:\webroot\catholica\img\imgstiri\")
WinWaitActive("Save Picture As …")
Send("{ENTER}")
WinWaitActive("Save Picture As …")
Sleep(1000)
Send(".jpg")
Send("{LEFT}")
Send("{LEFT}")
Send("{LEFT}")
Send("{LEFT}")[/PHP]

Acum explicaţiile. În linia 4 trimit CTRL+R (Resize) ca să redimensionezi imaginea. În linia 5 spun să aştepte până devine activă o fereastră cu titlul “Resize/Resample image”. Acum trimite (ca şi cum aş tasta) 150 şi apoi tot cum aş tasta trimite Alt-O (adică OK, să se închidă fereastra). În linia 8 aştept să mă asigur că sunt din nou în IrfanView (nu o fereastră secundară a lui). Acum trimit CTRL+E, cu linia 9 şi cum din start îmi este selectat pe Sharpen, trimit Enter ca să se execute. Iar aştept fereastra IrfanView (deci siguranţa că s-a terminat procesul anterior) şi apelez punerea bordurii (vezi captura de mai sus). Cum am deja 1 peste tot şi negru, pot da direct Enter. Mda… probabil v-am pierdut (verificaţi live cu programul IrfanView). Mai rămâne să trimit, ca şi cum aş tasta, s (pentru salvare). Aştept să fie fereastra de salvare, scriu calea, dau un Enter, aştept să se deschidă directorul pentru care am dat calea şi mai scriu, că mi-s comod, .jpg şi apoi dau săgeată stânga de patru ori ca să mă aştepte cursul exact unde trebuie să dau nume imaginii. Vă daţi seama câţi paşi am economist scriind acest script? I-am asociat o scurtătură din taste şi acum ajunge să am în IrfanView imaginea care mă interesează, detaliul din ea eventual, şi apăsând acea combinaţie se fac toţi paşii care altfel îi făceam manual.

Poate vă întrebaţi ce e cu primele 3 linii de cod. Un workaround. După îndelungi teste la mine nu a mers decât simulând Alt-Tab şi apoi activând IrfanView deja deschis.

Reţineţi că e doar un exemplu. Gândiţi-vă la ce faceţi în mod repetat şi programaţi cu AutoIt. La final generaţi un exe pe care îl lansaţi când aveţi nevoie. E simplu…


Apreciază articolul:

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

1 comentariu

  1. andrey spune:

    Supeeeeeeeeeer tare frate, blogul! Ai avut de muncit la el mult de tot.
    Felicitari.


Lasă un răspuns

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