}w !"#$%&'()+,-./012345
M ASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Využití jazyka AutoIt pro správu poˇcítaˇcu˚ s operaˇcními systémy MS Windows ˇ B AKALÁ RSKÁ PRÁCE
Pavel Knˇezek
Brno, 2010
Prohlášení Prohlašuji, že tato bakaláˇrská práce je mým puvodním ˚ autorským dílem, které jsem vypracoval samostatnˇe. Všechny zdroje, prameny a literaturu, které jsem pˇri vypracování používal nebo z nich cˇ erpal, v práci rˇ ádnˇe cituji s uvedením úplného odkazu na pˇríslušný zdroj.
Vedoucí práce: RNDr. Jaroslav Pelikán, Ph.D. ii
Podˇekování Chtˇel bych podˇekovat RNDr. Jaroslavu Pelikánovi, Ph.D. za vedení bakaláˇrské práce a jeho cenné rady týkající se obsahu a formální stránky. Také bych rád podˇekoval celé své rodinˇe za podporu bˇehem studií i své pˇrítelkyni za trpˇelivost.
iii
Shrnutí Tato práce se zabývá historií skriptovacího jazyka AutoIt od poˇcátku˚ až do souˇcasné verze 3. Popsáno je jeho použití pro správu poˇcítaˇcu˚ s operaˇcními systémy Microsoft Windows a názornˇe vysvˇetleno v nˇekolika pˇríkladech, z nichž jsou tˇri realizovány.
iv
Klíˇcová slova AutoIt, AutoIt v3, skriptovací jazyk, programování, automatizace, správa poˇcítaˇcu˚
v
Obsah 1 2
Úvod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Historie a vývoj jazyka AutoIt . . . . . . . . . . . . . . . . . . . . . 2.1 Duvod ˚ vzniku a poˇcátky vývoje . . . . . . . . . . . . . . . . . . 2.2 AutoIt v1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1 Licenˇcní podmínky . . . . . . . . . . . . . . . . . . . . . 2.3 AutoIt v2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1 Aut2Exe a Exe2Aut . . . . . . . . . . . . . . . . . . . . . 2.3.2 AutoItX a AutoItDLL . . . . . . . . . . . . . . . . . . . . 2.4 AutoIt v3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Zmˇena licenˇcních podmínek . . . . . . . . . . . . . . . 2.4.2 SciTE4AutoIt3 . . . . . . . . . . . . . . . . . . . . . . . . 2.4.3 Koda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.4 Další nástroje . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Budoucí vývoj . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Možnosti jazyka AutoIt v3 pro správu OS Windows . . . . . . . . 3.1 Automatizace a skripty . . . . . . . . . . . . . . . . . . . . . . . 3.2 Grafické rozhraní . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Podpora COM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Rozdíly v použití AutoIt v3 mezi verzemi MS Windows . . . . 4 Pˇríklady použití jazyka AutoIt v3 . . . . . . . . . . . . . . . . . . . 4.1 Demonstrace interakce s grafickým rozhraním a skriptování . 4.2 Pˇripojení souborového systému vzdáleného poˇcítaˇce . . . . . 4.2.1 Grafické rozhraní . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 Explore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 CMD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Shromáždˇení informací o poˇcítaˇci . . . . . . . . . . . . . . . . . 4.3.1 Grafické rozhraní . . . . . . . . . . . . . . . . . . . . . . 4.3.2 Získání dat . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Další návrhy využití . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Využití knihoven pro sledování událostí MS Windows 4.4.2 Automatické aktualizace a úprava systému . . . . . . . 4.4.3 Propojení s databázemi . . . . . . . . . . . . . . . . . . 4.5 Komerˇcní a jiné varianty pˇredešlých aplikací . . . . . . . . . . 5 Závˇer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Literatura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Pˇriložené CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 2 2 2 3 4 4 4 5 5 6 6 7 8 10 10 11 12 13 14 14 15 15 15 15 16 17 17 18 19 19 19 20 20 22 23 24
vi
Kapitola 1
Úvod Mnoho správcu˚ poˇcítaˇcových sítí se potýká s problémem, jak efektivnˇe a za pomoci co ˇ nejmenšího úsilí administrovat poˇcítaˇce. Casto jsou na nich nuceni provést tutéž úlohu cˇ i operaci, nˇekdy i opakovanˇe, což muže ˚ být velmi vyˇcerpávající a cˇ asovˇe nároˇcné. Pokud správce musí nˇejaký úkol provádˇet dlouhodobˇe cˇ i vícenásobnˇe, již se muže ˚ vyplatit vˇenovat úsilí do vývoje skriptu nebo programu pro automatizaci dané cˇ innosti. Toto úsilí se pak vrátí v podobˇe znaˇcných cˇ asových úspor, nehledˇe na skuteˇcnost, že lidský mozek má, narozdíl od poˇcítaˇcového kódu, tendenci dˇelat pˇri monotónních úkonech chyby. Pro tyto úˇcely bylo v minulosti vyvinuto mnoho nástroju, ˚ od jednoduchých programu˚ usnadnujících ˇ specifickou cˇ innost, pˇres robustní aplikace obsahující celou sadu nástroju, ˚ až po napˇríklad skriptovací jazyky, které umožnují ˇ automatizaci rozliˇcných ukol ˚ u. ˚ Právˇe za tímto úˇcelem byl vyvinut skriptovací jazyk AutoIt. V prubˇ ˚ ehu nˇekolika let byl však jeho koncept nˇekolikrát pˇrepracován a v souˇcasné dobˇe je to již plnohodnotný programovací jazyk se zamˇerˇ ením na práci s operaˇcním systémem Microsoft Windows. Jazyk AutoIt se již ve svých poˇcátcích stal mezi mnoha administrátory pojmem a cˇ asto využívaným nástrojem. Právˇe oni mˇeli nejvíce požadavku˚ na smysluplné vylepšení, nˇekteˇrí se dokonce zapojili pˇrímo do dalšího vývoje jazyka. Jazyk má v souˇcasnosti velmi širokou uživatelskou základnu, rˇ ízený vývoj i hlášení chyb. Pˇresto o nˇem existuje jen jediná velmi struˇcná publikace a mnoho informací je roztroušeno na ruzných ˚ místech, vˇetšinou internetových stránkách. Cílem práce je tyto cˇ asto složitˇe dosažitelné informace shromáždit a chronologicky popsat vývoj jazyka od poˇcátku až po souˇcasnost, vˇcetnˇe klíˇcových událostí, které jazyk výraznˇe ovlivnily, nebo se na použitelnosti velkou mˇerou podílely. Nedílnou souˇcástí je pak popis samotného jazyka a jeho možností, s uvedením názorných pˇríkladu˚ a poukázáním na další možnosti využití. Práce zaˇcíná popisem historie a vývoje programovacího jazyka AutoIt, vˇcetnˇe pˇrímo pro nˇej urˇcených aplikací. Druhá kapitola popisuje jazyk až do souˇcasné verze 3 a krátce se také zabývá souˇcasným vývojem a jeho odnoží AutoHotkey. Ve tˇretí kapitole se práce již zabývá možnostmi jazyka a v jednotlivých podkapitolách popisuje hlavní rysy a zpusoby ˚ použití. Nˇekteré z nich jsou názornˇe vysvˇetleny na pˇríkladech v následující cˇ tvrté kapitole. Programy a skripty byly naprogramovány pro tuto práci s ohledem i na jejich možnou využitelnost hlavnˇe pro administrátory. V závˇeru pak práce shrnuje svuj ˚ pˇrínos v této problematice. Souˇcástí je i pˇríloha obsahující dokumentaci a návody k aplikacím popsaným ve tˇretí kapitole, samotné aplikace pak lze najít na pˇriloženém CD. 1
Kapitola 2
Historie a vývoj jazyka AutoIt 2.1
Duvod ˚ vzniku a poˇcátky vývoje
Historie jazyka AutoIt1 se zaˇcala psát v rˇ íjnu 1998. Tehdy dostal Jonathan Bennett za úkol ve své firmˇe nainstalovat na poˇcítaˇce s operaˇcním systémem MS Windows NT4 vˇetší množství aplikací. Záhy zjistil, že vˇetšina tˇechto aplikací neumožnuje ˇ takzvanou tichou instalaci, neboli nevyžadující pozornost, a zaˇcal hledat rˇ ešení. Našel jej v programu ScriptIt spoleˇcnosti Microsoft, pˇreloženém WinBatch skriptu urˇceném pro automatizaci instalací. Bohužel však tento program mˇel rˇ adu nevýhod, napˇríklad nemožnost zadat prodlevu mezi stisknutím tlaˇcítek nebo zmˇenu pracovního adresáˇre. Navíc se ukázalo, že v systému MS Windows 2000 s jádrem NT5 nˇekteré funkce nadále nepracovaly správnˇe. V prosinci téhož roku se Bennett rozhodl naprogramovat vlastní aplikaci v jazyce C, v nadˇeji, že bude mít nad automatizací vˇetší kontrolu, obzvláštˇe nad zmínˇenou prodlevou mezi stisknutím tlaˇcítek.
2.2
AutoIt v1
V lednu 1999 Jonathan Bennett vydal první verzi AutoIt se syntaxí podobnou ScriptIt. Možnosti byly zatím jen omezené, pˇresto již tato první verze splnovala ˇ vše, co si od ní Jonathan Bennet sliboval. Obsaženy byly následující pˇríkazy: •
Send – Pˇríkaz simulující stisknutí klávesy uživatelem.
•
Run – Spustí program a ihned pˇrejde na další rˇ ádek skriptu. Na rozdíl od ScriptIt lze nastavit pracovní adresáˇr.
•
RunWait – Oproti pˇredchozímu pˇríkazu pˇred pˇrechodem na další rˇ ádek skriptu cˇ eká na ukonˇcení spuštˇeného programu.
•
WinWait – Skript cˇ eká než zaˇcne existovat okno definované parametrem.
•
WinWaitActive – Podobný pˇríkaz jako WinWait, navíc ale cˇ eká než je okno aktivní.
•
WinWaitClose – Skript cˇ eká až pˇrestane existovat okno definované parametrem.
1. název lze pˇreložit jako „ZautomatizujTo“
2
2.2. AUTOIT V1 •
WinHide, WinActivate – Schová, respektive aktivuje okno.
•
WinClose, WinRestore – Zavˇre, respektive obnoví okno.
•
Sleep – Zastaví provádˇení skriptu na parametrem definovaný poˇcet milisekund.
•
SetKeyDelay – Tento pˇríkaz upravuje prodlevu mezi stiskem kláves odeslaných pˇríkazem Send.
Tyto funkce umožnovaly ˇ dostateˇcnou kontrolu nad automatizací instalací. Oproti ScriptIt byl AutoIt v1 s velikostí 40 KB dokonce o 600 KB menší, umožnoval ˇ zmˇenu pracovního adresáˇre, nastavení prodlevy mezi stisky kláves a autor sliboval rychlou nápravu pˇrípadnˇe nalezených chyb. Následující kód je ukázka syntaxe AutoIt v1. ; Spustí notepad, napíše text a ukonˇ cí se. ; ======================================== Run, notepad.exe WinWaitActive, Untitled Send, aAbBcCdDeEfF {!}"${%}{^}&*()_-{+}=#{ENTER} Sleep, 1000 Send, 12345678 Send, {BS 4}#{BACKSPACE 4} Send, !{F4} WinWaitActive, Notepad, save the changes? Send, !n WinWaitClose, Untitled -- Notepad
Vývoj AutoIt v1 skonˇcil v dubnu 1999 verzí 1.8, která již kromˇe výše zmínˇených pˇríkazu˚ umˇela napˇríklad nˇekolik pˇredem definovaných podmínek (IfWinExist, IfWinNotExist, IfWinActive, IfWinNotActive, IfMsgBox, IfExist, IfNotExist), pˇríkazy MsgBox a InputBox, navíc skript již dokázal simulovat vˇetšinu kláves, vˇcetnˇe levého a pravého kliknutí myši. Velkým pˇrínosem byla také funkce [ADLIB], která umožnovala ˇ odchytit a zpracovat neoˇcekávaná okna v prubˇ ˚ ehu skriptu. Jazyk obsahoval take pˇríkaz Goto, v podstatˇe primitivního pˇredchudce ˚ volání funkcí. 2.2.1 Licenˇcní podmínky AutoIt byl od poˇcátku vyvíjen pod licencí GPL[1]. Tato licence spíše než aby omezovala použití, zaruˇcuje práva uživatelu. ˚ Autor je povinen napˇríklad poskytnout žadateli zdrojový kód, bud’ uložením na veˇrejnˇe dostupném místˇe, cˇ i pˇríslibem poskytnutí na vyžádání. Významnou podmínkou je pak takzvaný copyleft, což znamená, že odvozené dílo musí být také pod licencí GPL. Pˇrestože se na vývoji AutoIt mohl podílet každý, protože zdrojový kód byl veˇrejný, Joˇ nathan Bennet si vývoj hlídal a zpoˇcátku pracoval sám. Casem se mezi pˇríznivci objevilo nˇekolik programátoru, ˚ kteˇrí byli natolik zkušení, že s nimi Jonathan Bennet vytvoˇril oficiální vývojový tým. Návrhy a zmˇeny ostatních programátoru˚ tak musely projít pˇres tuto skupinu. 3
2.3. AUTOIT V2
2.3
AutoIt v2
S rostoucí oblibou vzrustal ˚ také poˇcet požadavku˚ na další funkce, jimž se Jonathan Bennet snažil vyhovˇet. Uvˇedomil si ale, že puvodní ˚ kód není optimální a implementace nových funkcí by byla problematická. V srpnu 1999 proto vydal AutoIt v2 ve verzi 2.0, která byla optimalizována tak, aby v budoucnu mohlo být snadnˇeji zaˇclenˇeno vˇetší množství nových funkcí. Pˇrechod na novou verzi mohl zpusobit, ˚ že starší skripty nefungovaly. Avšak zmˇeny nebyly natolik rozsáhlé a pˇrípadné úpravy tedy nebyly nároˇcné. Bˇehem následujících dvou let docházelo z velké cˇ ásti jen k pˇridání nových funkcí na základˇe uživatelských požadavku, ˚ proto nedošlo k žádným významnˇejším zmˇenám. Za zmínku pˇresto stojí napˇríklad operace s registry Windows a s textovými rˇ etˇezci, pˇríkaz FileInstall a pˇríkazy pro manipulaci se soubory a složkami. S množstvím nových funkcí vzrustal ˚ také zdrojový kód, což vedlo k jeho znepˇrehlednˇení. V kvˇetnu 2001 proto Jonathan Bennet vydal novou verzi 2.60 kompletnˇe pˇrepsanou do jazyka C++. Tato úprava se z hlediska bˇežných uživatelu˚ nijak neprojevila, nicménˇe lepší cˇ itelnost kódu usnadnila vývojáˇrum ˚ práci. Poslední verze AutoIt v2 s poˇradovým cˇ íslem 2.64 byla vydána v prosinci 2002. V té dobˇe už exisovala rozsáhlá komunita s vlastními internetovými stránkami i diskuzním fórem2 pro sdílení informací a nápadu. ˚ 2.3.1 Aut2Exe a Exe2Aut V záˇrí 1999 byl spoleˇcnˇe s verzí 2.1 vydán pˇrekladaˇc Aut2Exe, vytvoˇrený pro pˇrekládání skriptu˚ do spustitelného souboru s pˇríponou exe. Autorem byl opˇet Jonathan Bennett. Pˇrekladaˇc byl pro administrátory velkým pˇrínosem, umožnoval ˇ totiž spuštˇení skriptu bez pˇrítomnosti samotného AutoIt programu. Výhodné také bylo, že skripty se staly „neˇcitelnými“ pro ostatní, takže administrátoˇri nemuseli mít obavy ze zveˇrejnˇení cˇ ástí skriptu. Ve verzi 2.62 byl ještˇe pˇridán program Exe2Aut, uˇcený pro zpˇetné pˇreložení programu do zdrojového kódu. Tuto možnost bylo možné zablokovat heslem, bez jehož znalosti zpˇetné pˇreložení nebylo realizovatelné. 2.3.2 AutoItX a AutoItDLL Spolu se zveˇrejnˇením druhé verze AutoIt (1999) vydal Bennett také AutoItX, což byla ActiveX verze jazyka pˇreložená do souboru AutoItX.dll. Tento soubor byl zamýšlen pro vyplnˇení mezer pˇri programování v jiných jazycích, které neumˇely to, v cˇ em AutoIt tak vynikal. Aby se metody uložené v tomto souboru daly použít, soubor AutoItX.dll musel být na klientském poˇcítaˇci registrován pomocí regsvr32.exe. Tato registrace ale vyžadovala administrátorská práva, proto jeho užití mohlo být v nˇekterých pˇrípadech komplikovanˇejší. V roce 2002 Jonathan Bennett vydal AutoItDLL, neboli AutoIt pˇreložený do souboru dll. Úˇcel byl stejný jako u AutoItX, narozdíl od nˇej se ale v jiných jazycích volaly pˇrímo 2. (ovˇerˇ eno k 18. kvˇetnu 2010)
4
2.4. AUTOIT V3 funkce. Výhoda byla zˇrejmá, knihovna se nemusela v systému registrovat a tudíž usnadnila spouštˇení plnˇe funkˇcních programu˚ bez potˇreby administrátorských práv. AutoItX i AutoItDLL byly aktualizovány spoleˇcnˇe s AutoIt, naposledy 17.12. 2002 s verzí 2.64. Pˇri vydání AutoIt v3 byly obˇe zmínˇené knihovny slouˇceny do AutoItX3.
2.4
AutoIt v3
Mezi rokem 2001 a 2003 se vývoj velmi zpomalil, nejen kvuli ˚ ztrátˇe Jonathanovy vule ˚ do další práce. Zpusobil ˚ ji hlavnˇe neuspoˇrádaný zdrojový kód jazyka, vzniklý nedomyšlenou syntaxí. Po diskuzích s ostatními vývojáˇri se rozhodl pro novou verzi AutoIt v3. Za cíl si položili dát jazyku nové možnosti tak, aby vypadal více jako skuteˇcný programovací jazyk. S tím spojili i nutnost vytvoˇrit novou syntaxi, která i po delším vývoji a mnoha úpravách udrží zdrojový kód pˇrehledný. Jakmile Jonathan Bennett vytvoˇril kostru, pˇripojili se k projektu další lidé a práce se zrychlila. Právˇe díky této pomoci byla první beta verze vydána již v bˇreznu 2003, po pouhých dvou mˇesících od výše zmínˇeného rozhodnutí. Dalším úpravám a veˇrejnému testování bylo vˇenováno sto beta verzí, až 29. února 2004 oficiálnˇe vyšel AutoIt v3 (v3.0.100). Pˇrehlednˇejší syntaxe, radikálnˇe vˇetší funkcionalita, zaˇclenˇení kvalitních a pˇrínosných uživateli definovaných funkcí (takzvané UDF), velmi podrobná nápovˇeda, systém hlášení chyb, vlastní fórum a mnoho dalších vˇecí pˇrilákalo nˇekolikanásobnˇe více uživatelu˚ než pˇredchozí verze. AutoIt se již vymanil svému puvodnímu ˚ úˇcelu a stal se všestranným programovacím jazykem pro bˇežné použití. Rozsah nových možností je natolik široký, že bude podrobnˇeji popsán ve tˇretí kapitole. 2.4.1 Zmˇena licenˇcních podmínek AutoIt byl od poˇcátku vyvíjen pod licencí GPL, která mimo jiné ostatním umožnuje ˇ použít cˇ ást zdrojového kódu, psaného pod zmínˇenou licencí, bez nutnosti žádat autory o svolení. Nejen morální povinností je ale toto využití popsat v dokumentaci nového projektu. Bˇehem vývoje AutoIt v3 Chris Mallett požádal vývojový tým AutoIt o integraci jím vytvoˇreného systému vytváˇrení klávesových kombinací. Tato žádost nebyla vyslyšena, hlavnˇe z technických duvod ˚ u, ˚ proto se Chris Mallet rozhodl využít volnˇe pˇrístupný zdrojový kód AutoIt v2 a vytvoˇrit tak nezávislý projekt AutoHotKey3 . V dokumentaci AutoHotKey bylo pˇresnˇe podle podmínek GPL zmínˇeno použití cˇ ástí zdrojového kódu AutoIt v2. Jeho autorum ˚ se ale taková poznámka zdála jako nepˇrimˇerˇ ená vzhledem k úsilí, které svému projektu vˇenovali. Podobné pˇrípady se stávaly již v minulosti, nikdy ale v takovém rozsahu. Tato událost spustila diskuzi o zmˇenˇe licenˇcních podmínek tak, aby již jejich práci nemohl využít nikdo bez jejich svolení. Pˇri rozhodování o nové licenci si Jonathan Bennet vynutil nˇekolik podmínek, hlavnˇe aby AutoIt zustal ˚ za každou cenu freeware. Tˇežší už bylo rozhodování, zda jen zmˇenit licenci a 3. (ovˇerˇ eno k 19. kvˇetnu 2010)
5
2.4. AUTOIT V3 nechat zdrojový kód otevˇrený, nebo ho nechat k dispozici jen omezenému poˇctu ovˇerˇ ených lidí. Silné argumenty mˇely obˇe varianty, nakonec však bylo rozhodnuto pro druhou z nich. AutoIt v3, konkrétnˇe 3.1.0, byla poslední verze vydaná pod licencí GPL. Všechny následující jsou vydávány pod novou licencí freeware closed source, která však pro vˇetšinu uživatelu˚ neznamená žádnou zmˇenu. AutoIt je stále zadarmo, vˇcetnˇe komerˇcního použití, pouze již není zveˇrejnován ˇ zdrojový kód. Zmˇenu licenˇcních podmínek uvítaly také komerˇcní subjekty, v nˇekterých pˇrípadech zakazovaly používaní programu˚ pod licencí GPL. Vývojový tým nyní tvoˇrí uzavˇrená komunita programátoru, ˚ mezi které není snadné proniknout. Pozvání je nabízeno lidem, kteˇrí se významnˇe podílí na tvorbˇe UDF, nebo pomocných nástrojích. I pˇres toto významné omezení se vývoj nezpomalil a ukázalo se, že to celému projektu spíše pomohlo. 2.4.2 SciTE4AutoIt3 Ke každému programovacímu jazyku neodmyslitelnˇe patˇrí textový editor. Zdrojový kód lze samozˇrejmˇe napsat i v poznámkovém bloku, nebo v jakémkoli jiném textovém editoru, nicménˇe je bˇežnou praxí vyvinout vlastní editor, pˇrípadnˇe pˇrizpusobit ˚ již existující potˇrebám jazyka. V pˇrípadˇe AutoIt v3 se jeho vlajkovou lodí stal editor SciTE4AutoIt3, což je zkratka pro Scintilla based text editor for AutoIt v3. SciTE4 , vytvoˇrený Neilem Hodgsonem, je editor urcˇ ený pˇrímo pro úˇcely programování. Mezi hlavní vlastnosti tak patˇrí zvýraznování ˇ syntaxe, indikátory chyb a doplnování ˇ kódu. V souˇcasné dobˇe dokáže SciTE rozlišit témˇerˇ osmdesát programovacích jazyku, ˚ pˇriˇcemž pˇridat lexer pro další je velmi snadné. Tento editor upravil Jos van der Zande s pomocí vývojového týmu AutoIt a vystavil jej na své stránky. SciTE4AutoIt3 je nabízen jako souˇcást instalace AutoIt v3, mimo to byl ale ještˇe vytvoˇren samostatný instalaˇcní balíˇcek, který navíc obsahuje nˇekolik pomocných aplikací. 2.4.3 Koda Protože se pomocí AutoIt v3 lze vytváˇret grafické rozhraní naprogramovaných aplikací, bylo jen otázkou cˇ asu než vznikne program, který pomocí takzvané WYSIWYG5 metody nahradí krkolomné ruˇcní formátování grafických prvku. ˚ Pro tento úˇcel byl vytvoˇren Koda FormDesigner. Tento editor vytvoˇril Martin Woods a Dmitry Yudin ve vývojovém prostˇredí Delphi a dokonce samotný editor je velmi podobný IDE Delphi. V dobˇre srozumitelné aplikaci si uživatel muže ˚ zvolit práci s pˇredem definovanými pˇredlohami, nebo zaˇcít s prázdným oknem. Pro tvorbu je k dispozici 31 prvku, ˚ pˇriˇcemž u každého z nich lze nastavit nebo upravit mnoho vlastností, napˇríklad styl, barvu nebo rˇ ez písma. Editor je vhodný hlavnˇe pro vytváˇrení projektu˚ s rozsáhlejším grafickým rozhraním. 4. (ovˇerˇ eno k 19. kvˇetnu 2010) 5. What You See Is What You Get
6
2.4. AUTOIT V3
Obrázek 2.1: Ukázka uživatelského prostˇredí programu SciTE4AutoIt3 S jeho pomocí lze jednoduše a pomˇernˇe rychle vytvoˇrit koneˇcný design, nastavit všechny vlastnosti a výsledek exportovat do zdrojového kódu AutoIt v3. Tento kód se pak musí samozˇrejmˇe doplnit o funkˇcní vlastnosti. Koda FormDesigner je stále vyvíjen, ale již v souˇcasné verzi 1.7.26 je plnˇe funkˇcní a umožnuje ˇ vytvoˇrení všech grafických prvku, ˚ které AutoIt v3 podporuje. 2.4.4 Další nástroje Následující nástroje nejsou natolik rozsáhlé, aby si každý z nich zasloužil vlastní podkapitolu, pˇresto znamenají pro vývojáˇre takový pˇrínos, aby byly alesponˇ zmínˇeny. AutoIt3Wrapper – Tento pomˇernˇe jednoduchý program upravuje nastavení pˇrekladaˇce, napˇríklad pomˇer komprese pˇri pˇrekladu do binárního souboru, ikonu, popisky a mnoho dalších vlastností. Tyto parametry také vloží na zaˇcátek zdrojového kódu pˇrekládaného souboru, takže pˇri dalším pˇrekladu programátor nemusí nic znovu nastavovat.
AU3Record – AutoIt byl zpoˇcátku vyvíjen jako cˇ istý skriptovací jazyk a jeho puvodní ˚ funkce jsou obsaženy ve všech vydaných verzích. Skriptování je poˇrád potˇrebné, proto byl vyvinut nástroj pro usnadnˇení tvorby zdrojového kódu. V aplikaci se spustí nahrávání 6. Ke dni 24.4.2010
7
2.5. BUDOUCÍ VÝVOJ
Obrázek 2.2: Ukázka uživatelského prostˇredí programu Koda FormDesigner a od té chvíle je každé kliknutí myší a stisknutí klávesy zaznamenáno. Tento záznam je pak pˇreveden do zdrojového kódu AutoIt v3, který lze dále upravit podle potˇreb. Skriptování je tak velmi jednoduché a dostupné i ménˇe zkušeným uživatelum. ˚
AutoIt v3 Window Info – Pˇrehlednˇe rozdˇelené okno zobrazuje velké množství dat týkajících se aktivního okna, vˇcetnˇe jeho kontrolních a ovládacích prvku. ˚ Pro bˇežné použití staˇcí titulek a zobrazený text, zkušenˇejším programátorum ˚ ale nabídne velice detailní informace v nˇekolika záložkách. Okno lze zmrazit kombinací kláves, aby bylo možné získané údaje zkopírovat.
2.5
Budoucí vývoj
V souˇcasné dobˇe není oznámena žádná zmˇena, která by radikálnˇe zasáhla do konceptu AutoIt v3. Pracuje se pˇredevším na opravování novˇe objevených chyb a pˇridávání funkcí. Nej8
2.5. BUDOUCÍ VÝVOJ
Obrázek 2.3: Ukázka uživatelského prostˇredí programu Koda FormDesigner pˇrínosnˇejší pro uživatele jsou tedy UDF, což jsou uživateli definované funkce. Tyto knihovny nejsou souˇcástí zdrojového kódu AutoIt, jejich pˇridání a použití je tedy velmi snadné.
9
Kapitola 3
Možnosti jazyka AutoIt v3 pro správu OS Windows AutoIt v3 je programovací jazyk tˇretí generace pro operaˇcní systém Microsoft Windows. Na základˇe rozhodnutí vývojového týmu vytvoˇrit z AutoIt v3 plnohodnotný programovací jazyk byla syntax navržena a pˇrepsána tak, aby se více podobala jazykum ˚ z rodiny Basic. AutoIt v3 je netypovaný, využívá tedy jen jeden datový typ, zvaný variant, který muže ˚ obsahovat libovolnou pˇriˇrazenou hodnotu. Dle povahy dané promˇenné je následnˇe programem vyhodnoceno, jaká operace bude provedena. Ve specifických situacích však muže ˚ dojít k nesprávnému vyhodnocení, proto jsou k dispozici funkce, které podmíní urˇcitý výpoˇcet. AutoIt v3 od svého poˇcátku prošel bouˇrlivým vývojem a v této verzi nabízí rozsáhlé možnosti užití. Jazyk je velmi všestranný, popisovat všechny možnosti by tedy bylo skuteˇcnˇe nároˇcné. Následující podkapitoly se zamˇerˇ ují jen na oblasti, které jsou využity v kapitole 4.
3.1
Automatizace a skripty
Skriptování bylo prvotním úˇcelem jazyka AutoIt a zachovalo se ve všech následujících verzích. Z puvodního ˚ poˇctu dvanácti skriptovacích funkcí v AutoIt v1 se AutoIt v3 rozrostl na bez mála 400 základních funkcí a témˇerˇ 2000 integrovaných UDF. Spolu s možností vytvárˇ ení smyˇcek a podmínek tak lze vytvoˇrit komplikované skripty, které se dokáží vypoˇrádat s nepˇredpokládanými situacemi. kód je pˇrepisem kódu použitého v kapitole 2 jako ukázka. Je vidˇet, že názvy puvodních ˚ funkcí zustaly ˚ zachovány, jen syntax se zmˇenila. ; Spustí notepad, napíše text a ukonˇ cí se. ; ======================================== Run("notepad.exe") WinWaitActive("Untitled -") Send("aAbBcCdDeEfF {!}${%}{^}&*()_-{+}=#{ENTER}") Sleep(1000) Send("12345678") Send("{BS 4}#{BACKSPACE 4}") Send("!{F4}") WinWaitActive("Notepad", "save the changes?") Sleep(5000) Send("!n") WinWaitClose("Untitled -- Notepad")
10
3.2. GRAFICKÉ ROZHRANÍ Každá automatizace, napˇríklad instalace, vyžaduje stisknutí nˇekolika tlaˇcítek, pˇrípadnˇe doplnˇení požadovaného textu. Toho lze dosáhnou pomocí funkce Send() a MouseClick(). Tyto funkce simulují akce uživatele odesláním virtuálních signálu, ˚ které jsou následnˇe systémem vyhodnoceny jako stisk tlaˇcítka myši nebo klávesy. Protože AutoIt v3 pracuje s kódovací tabulkou UNICODE, muže ˚ být jako parametr funkce Send() odeslán jakýkoliv znak. Aby bylo klikání myší nebo stisknutí kláves provedeno ve správnou chvíli, je nezbytné kontrolovat stav systému a zobrazená okna. Funkce ze skupiny Window management takový úˇcel plní, mají za úkol napˇríklad kontrolovat, zda je požadované okno stále aktivní, pˇrípadnˇe toto okno pˇrenést do popˇredí. V pˇrípadˇe potˇreby lze vhodnou kombinací kontrol a operací zautomatizovat témˇerˇ jakoukoliv úlohu a zopakovat ji v libovolném množství. Skript pak muže ˚ být distribuován a spuštˇen s významnou cˇ asovou úsporou.
3.2
Grafické rozhraní
Od verze v3.1.01 AutoIt nabízí funkce pro vytváˇrení grafického uživatelského rozhraní (GUI). Tato možnost tak AutoIt posunula do popˇredí mezi jazyky, jakým je napˇríklad Visual Basic. Dává tak uživatelum ˚ možnost pˇridat ke svým programum ˚ prostˇredí pro interkativní kontrolu a zobrazení dat. Funkce AutoIt v3 dovolují uživatelum ˚ vytvoˇrit 22 rozliˇcných prvku, ˚ z nichž lze vytvoˇrit jednuduchá i velmi komplikovaná grafická rozhraní. Pˇríklad je zobrazen na obrázku 3.1. Label Checkbox Date Tab ContextMenu Graphic
Button Radio Pic UpDown TreeView Dummy
Input Combo Icon Avi Slider
Edit List Progress Menu ListView
Tabulka 3.1: Výˇcet grafických prvku, ˚ které lze vytvoˇrit pomocí AutoIt v3 Grafická rozhraní využívají dvou metod bˇehu, pˇriˇcemž lze zvolit libovolnou z nich. Mód MessageLoop využívá smyˇcku, ve které je volána funkce GUIGetMsg(). Podle návratové hodnoty je pak rozhodnuto o pokraˇcování programu. U druhé metody se musí na zaˇcátku zdrojového kódu zadat definice Opt("GUIOnEventMode", 1) a ke každému ovládacímu prvku pˇridat funkci GUICtrlSetOnEvent(ControlHandle, NameOfControl). Program tedy pˇreruší bˇeh jen když uživatel zmˇení stav nˇekterého z ovládacích prvku. ˚ Oba módy jsou však ekvivalentní a lze zvolit libovolný dle preferencí programátora.
1. Vydána 7. února 2005
11
3.3. PODPORA COM
Obrázek 3.1: GUI vytvoˇreného pomocí AutoIt v3
3.3
Podpora COM
COM, neboli Component Object Model, je rozhraní pro propojení ruzných ˚ programu˚ pomocí objektu˚ a jejich metod bez nutnosti znalosti jejich vnitˇrní implementace. Aˇckoliv AutoIt v3 poskytuje velké množství vlastních funkcí a UDF, využití COM muže ˚ ušetˇrit nˇekolik rˇ ádku˚ zdrojového kódu, pˇrípadnˇe vykonat operace, na které už samotné AutoIt nestaˇcí. Pokud bychom napˇríklad potˇrebovali zobrazit okno Display Properties, dalo by se využít simulace kliknutí pravého tlaˇcítka myši a nˇekolika podmínkových rˇ ádku˚ kódu. Mnohem jednodušší je však vyvolat toto okno pomocí COM. $oShell = ObjCreate("shell.application") $oShell.ControlPanelItem("desk.cpl")
První rˇ ádek vytvoˇrí objekt, na nˇejž se do promˇenné uloží ukazatel. Druhý rˇ ádek pak na tento objekt zavolá metodu ControlPanelItem, která vyvolá okno Display Properties. Tyto objekty nejsou souˇcástí AutoIt v3, nýbrž programu˚ tˇretích stran. Dostupné objekty v dané instalaci operaˇcního systému lze zjistit pomocí programu OLE/COM Object Viewer, který je souˇcástí Windows 2000 Resource Kit Tool a k dispozici je zdarma ke stažení na stránkách Microsoftu. Tento program naˇcte všechny COM objekty nainstalovaných aplikací v systému a zobrazí jejich metody, které je pak možné využít pˇri programování. 12
3.4. ROZDÍLY V POUŽITÍ AUTOIT V3 MEZI VERZEMI MS WINDOWS
3.4
Rozdíly v použití AutoIt v3 mezi verzemi MS Windows
AutoIt je vázaný na operaˇcní system Microsoft Windows, který také prochází vývojem a v jehož jednotlivých verzích muže ˚ docházet k rozdílum. ˚ Programátor tak pˇri vytváˇrení skriptu nebo programu musí tyto rozdíly uvážit a provést patˇriˇcné úpravy. Od verze 3.2.10.0 je k dispozici také 64bitová verze AutoIt, urˇcená pro 64bitový operaˇcní system Windows XP, nebo novˇejší.
Microsoft Windows 9X – Protože se základní principy ovládání operaˇcního systému Microsoft Windows dodnes zásadnˇe nezmˇenily, je stále možné AutoIt v3 používat jak pro Windows 95 tak pro 98. Od verze 3.3.0 je však podpora pro systémy Windows 9x a Windows NT4 zrušena.
Microsoft Windows 2000 a ME – Tyto verze jsou stále podporované a nemˇely by zpusobo˚ vat potíže.
Microsoft Windows XP – AutoIt v3 byl vydán v dobˇe, kdy již byl Windows XP na osobních poˇcítaˇcích nejpoužívanˇejším operaˇcním systémem. Právˇe proto je jeho kompatibilita zamˇerˇ ena primárnˇe na tento systém. Jelikož prodloužená podpora vyprší až v roce 2014[2], budou do té doby Windows XP pravdˇepodobnˇe hojnˇe využívány hlavnˇe v komerˇcním sektoru.
Microsoft Windows Vista Tento systém pˇrišel mimo jiné s novinkou, takzvaným UAC (User Account Control). Služba se snaží zabránit zneužití administrátorských práv tím, že pˇri nˇekterých operacích vyžaduje potvrzení administrátora. AutoIt v3 nabízí direktivu #requireadmin, která kontroluje, zda byl program spuštˇen s administrátorskými právy. Toto omezení lze však obejít napˇríklad vytvoˇrením systémové služby, která požadovanou aplikaci spustí. Totéž platí také pro Windows 7.
Microsoft Windows 7 – Dle statistických pruzkum ˚ u[3] ˚ je Windows 7 již dnes2 rozšíˇrenˇejším operaˇcním systémem než Windows Vista. Po vypršení podpory Windows XP spoleˇcnosti Microsoft se pravdˇepodobnˇe stane dominantním operaˇcním systémem na osobních poˇcítaˇcích. Lze tedy oˇcekávat, že hlavní zájem vývojového týmu AutoIt se postupnˇe pˇresune právˇe k této verzi systému.
2. Ke dni 16. kvˇetna 2010
13
Kapitola 4
Pˇríklady použití jazyka AutoIt v3 V následujících podkapitolách je popsáno nˇekolik zpusob ˚ u˚ použití jazyka AutoIt v3 pro správu poˇcítaˇce. Tyto pˇríklady ukazují jen velmi málo z toho, co ve skuteˇcnosti umožnuje, ˇ pˇresto jasnˇe a jednoduše ukazují principy programování v tomto jazyce. První tˇri pˇríklady jsou realizovány a k dispozici na CD pˇriloženém k práci.
4.1
Demonstrace interakce s grafickým rozhraním a skriptování
ScriptDemo je ukázka skriptování rozdˇelená do nˇekolika celku. ˚ Všechny cˇ ásti jsou uvedeny dialogovým oknem vytvoˇreným funkcí MsgBox() patˇriˇcnˇe komentujícím následující události. Automatizace instalace – Pro ukázku automatizace instalaˇcního procesu byl zvolen program Linos Zip Compression1 spoleˇcnosti Linos Software. Princip automatizace byl popsán již v kapitole 3.1. Automatizace poznámkového bloku – Pro tuto ukázku byl použit mírnˇe modifikovaný zdrojový kód uvedený v kapitole 3. Nejdˇríve se pomocí funkce Run() spustí poznámkový blok, pˇriˇcemž funkce WinWaitActive() pozastaví další kroky sriptu, do doby než je okno aktivní. Dále se na výstup klávesnice odešle nˇekolik sekvencí kláves funkcí Send(). Na závˇer je poznámkový blok ukonˇcen bez uložení. Pˇridání uživatelského úˇctu – Jedním z úkolu˚ správcu˚ muže ˚ být pˇridávání, mazání a úprava uživatelských úˇctu˚ operaˇcního systému. Tyto operace lze provádˇet pomocí pˇríkazové rˇ ádky operaˇcního systému Windows pˇríkazem net user. Po cˇ ase definovaném v milisekundách funkcí Sleep() je úˇcet smazán. Mezikroky jsou zobrazovány konzolí Computer Management. RunWait("cmd.exe /c net user ScriptDemoUser password /add) Sleep(20000) RunWait("cmd.exe /c net user ScriptDemoUser /delete) 1. (ovˇerˇ eno k 19. kvˇetnu 2010)
14
ˇ ˇ ˇ 4.2. P RIPOJENÍ SOUBOROVÉHO SYSTÉMU VZDÁLENÉHO PO CÍTA CE
4.2
Pˇripojení souborového systému vzdáleného poˇcítaˇce
Pˇri vzdálené správˇe je výhodné mít pˇrístup k souborum ˚ poˇcítaˇce. K tomu je potˇreba mít nastavené sdílené složky, nebo povolit administrátorské sdílení složek[4]. Program ConnectDrive zjednodušuje pˇripojení vzdálených poˇcítaˇcu˚ poskytnutím grafického rozhraní. Výhodou je mimo jiné zobrazení chybových hlášení, což usnadnuje ˇ nápravu. Pˇredpokladem pro úspˇešné pˇripojení je znalost IP adresy nebo názvu cílového poˇcítaˇce, pˇrihlašovacích údaju˚ a hlavnˇe dostupnost v síti. 4.2.1 Grafické rozhraní Program ConnectDrive je ovládán pomocí grafického rozhraní vytvoˇreném ihned po spuštˇení. Pro jednodušší vykreslování okna jsou jednotlivé prvky bˇehem interakce schovávány, respektive zviditelnovány. ˇ Pro zadání hodnot jsou použity editaˇcní pole a pro ovládání programu tlaˇcítka. Informace o prubˇ ˚ ehu poskytují cˇ tyˇri grafické prvky, podrobnˇejší informace jsou vypisovány ve stavovém rˇ ádku. V následujícím kódu první rˇ ádek vytvoˇrí oblast pro vykreslování grafiky a uloží ukazatel do promˇenné. Druhý rˇ ádek nastaví barvu pozadí ovládacího prvku, tˇretí barvu vykresˇ leného tvaru. Ctvrtý rˇ ádek urˇcuje, že tento tvar je elipsa, parametry pak nastavují rozmˇery elipsy, cˇ ímž vznikne kruh. $G_1led = GUICtrlCreateGraphic(325, 10, 21, 21) GUICtrlSetBkColor(-1, 0xebe9ed) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0x000000, 0x808080) GUICtrlSetGraphic(-1, $GUI_GR_ELLIPSE, 0, 0, 21, 21)
Grafické prvky indikují stav jednotlivých kroku˚ programu pomocí barev. Protože oblast grafiky je již nastavena, staˇcí jen pˇrekreslit obsah. První rˇ ádek v následujícím kódu nastavuje barvu a druhý tvar. Tˇretí rˇ ádek je nutný pro vynucené pˇrekreslení, aby se zmˇena projevila. GUICtrlSetGraphic($G_1led, $GUI_GR_COLOR, $Black, $color) GUICtrlSetGraphic($G_1led, $GUI_GR_ELLIPSE, 0, 0, 21, 21) GUICtrlSetGraphic($G_1led, $GUI_GR_REFRESH)
4.2.2 Settings V pohledu Settings lze nastavit chování programu, které je možné uložit do souboru ConnectDrive.INI. Pokud je pˇri startu programu zjištˇena pˇrítomnost tohoto souboru, jsou data naˇctena funkcí IniRead(), v opaˇcném pˇrípadˇe je použito základní nastavení. Bˇehem chodu programu jsou dle nastavení provedeny pˇrílslušné operace. 4.2.3 Explore Stisknutím tlaˇcítka Explore se spustí process _Explore(), jehož cílem je otevˇrít sít’ovou jednotku nebo složku. Pro úspˇešné pˇripojení je potˇreba zadat do pˇríslušných polí název 15
ˇ ˇ ˇ 4.2. P RIPOJENÍ SOUBOROVÉHO SYSTÉMU VZDÁLENÉHO PO CÍTA CE
Obrázek 4.1: Ukázka programu ConnectDrive cílového poˇcítaˇce nebo jeho IP adresu, pˇrihlašovací jméno, heslo a cestu k sít’ové složce. Jako cesta muže ˚ být použita administrátorská sdílená složka, musí však být povolená na cílovém poˇcítaˇci2 . Pro zobrazení pruzkumníka ˚ se sdílenými soubory vzdáleného poˇcítaˇce musí být nejdˇríve pˇripojen sít’ový disk. První parametr, prázdný rˇ etˇezec, nepˇriˇrazuje sít’ové složce písmeno. Další z parametru˚ 0 nastavuje pˇripojení tak, že není trvalé. DriveMapAdd("", "\\"&$Host&"\"&$Path, 0, $Login, $Password)
Pˇredchozí krok je nutný, pokud je pˇrístup ke vzdálenému poˇcítaˇci chránˇen heslem. Tím se vynutí pˇrihlášení a další krok již otevˇre požadovanou složku. Run("explorer.exe \\"&$Host&"\"&$Path)
Každé pˇripojení je uloženo a pokud je uživatelem nastaveno automatické odpojení, funkce DriveMapDel() je pˇri ukonˇcení programu odpojí. Protože však tato pˇripojení nejsou trvalá, byla by odpojena pˇri restartu poˇcítaˇce. 4.2.4 CMD K pˇripojení ke vzdálenému poˇcítaˇci je použit program psexec ze sady nástroju˚ PsTools Marka Russinoviche[5]. Následující cˇ ást kódu pˇri pˇreložení do binárního souboru vloží soubor psexec.exe, pˇri spuštˇení pak tento soubor nainstaluje na zadané místo. V tomto pˇrípadˇe je cesta vynechána, soubor se tedy nainstaluje do stejné složky, ze které byl program spuštˇen. FileInstall("source","destination") 2. Nesmí být povoleno Simple File Sharing
16
ˇ ˇ ˇ 4.3. SHROMÁŽD ENÍ INFORMACÍ O PO CÍTA CI Další rˇ ádek kódu spustí v pˇríkazové rˇ ádce soubor psexec.exe se cˇ tyˇrmi parametry. Poslední z nich definuje, který program má být na cílovém poˇcítaˇci spuštˇen. Ten pak posílá návratové hodnoty do pˇríkazové rˇ ádky. Protože je však v tomto pˇrípadˇe spuštˇena samotná pˇríkazová rˇ ádka, funguje jako konzole cílového poˇcítaˇce. Run("cmd.exe /k psexec.exe \\"&$Host&" -u "&$Login&" -p "&$Pwd&" cmd")
V zobrazené pˇríkazové rˇ ádce vzdáleného poˇcítaˇce lze využít pˇríkazu˚ operaˇcního systému MS-DOS k docílení požadovaných výsledku. ˚
4.3
Shromáždˇení informací o poˇcítaˇci
Pˇri správˇe poˇcítaˇcu, ˚ obzvláštˇe pokud se jedná o vˇetší množství, muže ˚ být pravidelné získávání informací komplikované. Pokud se správce nerozhodne pro nepˇríjemnou manuální práci, muže ˚ využít AutoIt v3. Správcum ˚ muže ˚ napˇríklad vzniknout potˇreba vlastnit aktuální informace o hardwaru i softwaru. Vˇetší poˇcet poˇcítaˇcu˚ však zvyšuje nároˇcnost získání dat. Pro takový úkol je vhodné pˇripravit program, který požadované informace obstará a v pˇrehledné formˇe poskytne. Informace o poˇcítaˇci však nemusí sloužit jen ke statistickému pˇrehledu, jednotlivˇe mohou být využity také k pˇrizpusobení ˚ bˇehu programu konkrétnímu prostˇredí a podmínkám. Obecnˇeji napsaný program tak bˇehem svého zpracování vyhodnotí okolnosti, na jejichž základˇe provede správné operace. Program GetInfo má za úkol shromáždit a zobrazit detailní informace o poˇcítaˇci, na nˇemž byl spuštˇen. Tento program bˇeží jen pod operaˇcním systémem Microsoft Windows a má jen minimální výpoˇcetní nároky. GetInfo tvoˇrí jediný soubor GetInfo.exe, nevyžaduje žádné další soubory ke svému bˇehu. Výstup muže ˚ být uložen ve formátu prostého textu, standardnˇe je nabídnut formát txt. 4.3.1 Grafické rozhraní Grafické rozhraní programu GetInfo je vytváˇreno postupnˇe bˇehem svého bˇehu a lze je rozdˇelit na dvˇe cˇ ásti. Pˇri spuštˇení je vytvoˇreno hlavní okno se dvˇema ovládacími prvky. V této fázi je to menu a tlaˇcítko Scan. Druhá fáze zaˇcíná stisknutím tlaˇcítka Scan, popˇrípadˇe výbˇerem položky Scan z menu. Tímto okamžikem je tlaˇcítko skryto a jsou vytvoˇreny dvˇe záložky, v každé z nich pak prázdná stromová struktura. Prozatím však nejsou zobrazeny. Bˇehem naˇcítání dat jsou ve stromové struktuˇre vytváˇreny uzly pro logické celky informací. O celkovém prubˇ ˚ ehu je uživatel informován prostˇrednictvím indikátoru prubˇ ˚ ehu, který je aktualizován po každém dílˇcím kroku. Jakmile je proces dokonˇcen, záložky i stromové struktury jsou zobrazeny. V pˇrípadˇe opakovaného skenu jsou záložky i stromy zniˇceny a vytvoˇreny znova. 17
ˇ ˇ ˇ 4.3. SHROMÁŽD ENÍ INFORMACÍ O PO CÍTA CI
Obrázek 4.2: Ukázka programu GetInfo 4.3.2 Získání dat Hlavním zdrojem dat je WMI[6], neboli Windows Management Instrumentation3 , což je sada rozšíˇrení k Windows Driver Model. Tato sada poskytuje operaˇcnímu systému rozhraní, pˇres které jednotlivé komponenty poskytují informace a oznámení. Po zahájení skenu program zaˇcne shromažd’ovat informace o poˇcítaˇci, pˇrevážnˇe pomocí WMI. Následující cˇ ást kódu zobrazuje získání informací o BIOSu daného poˇcítaˇce. $WMI = ObjGet("winmgmts:\\" & $Compname & "\root\CIMV2") $Items = $WMI.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", 0x10 + 0x20)
Objekt uložený v promˇenné $colItems je dále rozložen na jednotlivé položky cyklem For...In...Next. For $objItem In $Items $BIOSInfo[1][0] = $objItem.Name $BIOSInfo[1][1] = $objItem.Status Next
Další informace jsou získány pomocí maker, které AutoIt v3 nabízí. Makra jsou oznacˇ ována prefixem @ a zastupují napˇríklad cestu k systémovým složkám, aktuální cˇ as, verzi AutoIt a mnoho dalších. 3. Nˇekdy udávaný jako Windows Management Interface
18
4.4. DALŠÍ NÁVRHY VYUŽITÍ Zobrazené výsledky lze libovolnˇe prohlížet, pˇrípadnˇe uložit. K tomu je urˇcena položka menu Save, která vyvolá dialogové okno pro uložení souboru. Implicitnˇe je nabízen název souboru GetInfo.txt ve složce My Documents.
4.4
Další návrhy využití
4.4.1 Využití knihoven pro sledování událostí MS Windows Události systému Windows[7] lze využít pro kontrolu stavu operaˇcního systému. Nejprve musí být vytvoˇren soubor dll, který obsahuje funkce pro každou událost, jež muže ˚ v systému nastat. AutoIt v3 bohužel vytváˇret soubory dll neumí, proto je nutné použít jiné vývojové prostˇredí, napˇríklad Dev-C++ spoleˇcnosti Bloodshed Software4 . Pro událost zamknutí poˇcítaˇce vypadá funkce následovnˇe. void APIENTRY Lock () { Spawnl(P_WAIT,"PathToProgram","Name","Argument",NULL); }
V tomto pˇrípadˇe je knihovna jen pomuckou ˚ pro spuštˇení jiného programu. Funkce Spawnl spustí definovaný program, je možné zvolit také argument. Program vytvoˇrený v AutoIt v3 pak zjistí, zda a s jakými argumenty byl spuštˇen. If $CmdLine[0]>0 Then If $CmdLine[1]="Argument" Then ... EndIf EndIf
Promˇenná $CmdLine je polem vytvoˇreným ve chvíli spuštˇení programu a obsahuje informace o pˇredaných parametrech. Kontrolou parametru˚ lze spustit ruzné ˚ cˇ ásti programu odpovídající dané události. Správce tak získá pˇrehled o cˇ innosti na poˇcítaˇci a muže ˚ lépe optimalizovat jeho správu, napˇríklad instalaci aktualizací jen když je uživatel odhlášen. 4.4.2 Automatické aktualizace a úprava systému Operaˇcní systémy Windows jsou vybaveny automatickým aktualizaˇcním systémem Windows Update. Tato služba stahuje a instaluje opravné a aktualizaˇcní balíˇcky doporuˇcené spoleˇcností Microsoft, nicménˇe ne vždy je žádoucí všechny skuteˇcnˇe instalovat. Možným rˇ ešením problému je vytvoˇrení vlastního aktualizaˇcního systému, který nainstaluje jen skuteˇcnˇe nezbytné balíˇcky. Princip programu lze shrnout do pˇeti bodu˚ popisujících dílˇcí cˇ ásti. •
Pˇripojení ke zdroji informací, napˇríklad databázi.
4. (ovˇerˇ eno k 19. kvˇetnu 2010)
19
ˇ ˇ 4.5. KOMER CNÍ A JINÉ VARIANTY P REDEŠLÝCH APLIKACÍ •
Stáhnutí instalaˇcních instrukcí se seznamem, co má být stáhnuto a spuštˇeno.
•
Porovnání instalaˇcních instrukcí s lokálním seznamem již provedených instalací.
•
Stáhnutí chybˇejících instalací ze sít’ového zdroje, napˇríklad pˇres FTP.
•
Aktualizace lokálního seznamu již provedených instalací.
Výhodou oproti službˇe Windows Update je možnost instalací nejen aktualizaˇcních balíˇcku˚ spoleˇcnosti Microsoft, ale i vlastních instalací, vytvoˇrených napˇríklad pomocí skriptovacích funkcí jazyka AutoIt. Aktualizace systému muže ˚ být spuštˇena vzdálenˇe, nebo plánovanˇe v libovolném cˇ ase pomocí služby Scheduled Tasks. 4.4.3 Propojení s databázemi Pˇri správˇe poˇcítaˇcu˚ muže ˚ dojít k situaci, kdy je nutné uložit získaná data na snadno dostupné místo. Takovému úˇcelu vyhovují databáze a AutoIt v3 obsahuje funkce, které s nimi dovolují pracovat. Základní instalace poskytuje knihovnu funkcí pracující s SQLite. AutoIt komunita však vytvoˇrila nˇekolik knihoven pro další verze databází, napˇríklad populární MySQL[8]. Tyto knihovny pracují s databázemi pomocí COM objektu. ˚ práci s databázemi musí být nainstalován odpovídající ovladaˇc, jehož COM objekty jsou dále využívány. Pˇripojení pak probíhá v pˇrípadˇe MySQL databáze následovnˇe. _MySQLConnect($Username, $Password, $Database, $Server)
Pˇrestože tyto knihovny nabízejí také množství funkcí pro pˇreddefinované dotazy, lze jakýkoliv dotaz vytvoˇrit pomocí funkce _Query($ConnectionObj, $Query), kde promˇenná $ConnectionObj je ukazatel na databázi vytvoˇrený funkcí _MySQLConnect a $Query je vlastní dotaz. Po skonˇcení práce by mˇelo být pˇripojení ukonˇceno pomocí funkce _MySQLClose().
4.5
Komerˇcní a jiné varianty pˇredešlých aplikací
V dnešní dobˇe na trhu existuje témˇerˇ ke keždému programu konkurenˇcí varianta. Nejinak je tomu i v ukázkách prezentovaných v této práci. Zajisté však nelze srovnávat komerˇcní produkty s uživatelskými formami. Jejich nesmírnou výhodou je jistˇe zázemí, ve kterých tyto produkty vznikají. Zdroje, at’ už lidské cˇ i finanˇcní, mohou být využívány mnohonásobnˇe úˇcinnˇeji. Konkurovat jim však lze, podíváme-li se na to z hlediska využitelnosti a ochrany citlivých dat. Velkou výhodou vlastních skriptu˚ a programu˚ je možnost vytvoˇrit program právˇe pro konkrétní prostˇredí. Takový program poté provádí pouze úkony, které jsou nezbytnˇe nutné a v pˇrípadˇe potˇreby je jednoduše upravitelný. Komerˇcní programy cˇ asto nabízejí velké množství funkcí, vˇetšina z nich však muže ˚ být v danou chvíli nepotˇrebná a zbyteˇcnˇe zdržovat bˇeh programu. 20
ˇ ˇ 4.5. KOMER CNÍ A JINÉ VARIANTY P REDEŠLÝCH APLIKACÍ Další výhodu lze najít v absolutní znalosti programu. V dnešní dobˇe je velmi snadné vložit do programu škodlivý kód, proto je duležitá ˚ opatrnost pˇri používání programu˚ tˇretích stran, obzvláštˇe v pˇrípadˇe práce se senzitivními daty. V pˇrípadˇe vlastního rˇ ešení také odpadají problémy spojené s licencí. Komplexní programy je jistˇe vhodnˇejší zakoupit i s odpovídající zákaznickou podporou, ménˇe nároˇcné úkoly je však výhodné vyˇrešit vlastními programy, nehledˇe na finanˇcní úsporu.
21
Kapitola 5
Závˇer Hlavním cílem této práce bylo shromáždit podstatné informace týkající se historie vzniku a vývoje jazyka AutoIt, jeho funkcí a postupu˚ pˇri programování a uvést je v ucelené podobˇe. Pˇrestože se skriptovací jazyk AutoIt tˇeší pomˇernˇe velké popularitˇe, chybí na knižním trhu kvalitní literatura. Mimo dokumentace AutoIt v3, popisující pˇredevším základní charakteristiky a funkce tohoto programovacího jazyka, byla doposud vydána jediná publikace[9] nakladatelstvím O’Reilly Media. I ta je však velmi struˇcná, charakteristice jazyka jsou v knize vˇenovány pouhé dvˇe strany. Podrobnˇejší informace o jazyku a jeho historii jsou tak dostupné jen v elektronické podobˇe na ruzných ˚ místech. V práci je nastínˇena historie vzniku jazyka, popis jazyka a možnosti využití AutoIt v praxi. Práce obsahuje také popis vývojových prostˇredí Koda a Scite a pomocných aplikací, které jsou využívány pˇri programování. Pro názornou ukázku možností jazyka AutoIt v3 byly realizovány tˇri pˇríklady. Ty byly podrobnˇeji popsány a zdrojový kód náležitˇe okomentován. Zdrojové i binární soubory jsou k dispozici na pˇriloženém CD. Nˇekolik dalších pˇríkladu˚ bylo uvedeno jen teoreticky, pˇresto v hrubé podobˇe popisují, jakým zpusobem ˚ by mˇely být koncipovány. Práce muže ˚ být rozšíˇrena o podrobnˇejší popis jazyka AutoIt v3, jelikož jediný ucelenˇejší popis poskytuje dokumentace, která je psána struˇcnˇe a velmi technicky. Prostor pro další realizaci nabízí také tvorba UDF. Aˇckoliv jich je v souˇcasné dobˇe implementováno již na 2000, stále jsou nedostateˇcné napˇríklad knihovny matematických funkcí.
22
Literatura [1] GNU General Public License, Wikimedia Foundation, Ovˇerˇ eno 19. kvˇetna 2010, . 2.2.1 [2] Zásady životního cyklu odborné pomoci spoleˇcnosti Microsoft, Microsoft corporation, Ovˇerˇ eno 19. kvˇetna 2010, . 3.4 [3] OS Platform Statistics, Refsnes Data, Ovˇerˇ eno 19. kvˇetna 2010, . 3.4 [4] Administrative share, Wikimedia Foundation, Ovˇerˇ eno 19. kvˇetna 2010, . 4.2 [5] Russinovich, M.: PsTools, Ovˇerˇ eno 19. kvˇetna 2010, . 4.2.4 [6] Windows Management Instrumentation, Wikimedia Foundation, Ovˇerˇ eno 19. kvˇetna 2010, . 4.3.2 [7] Winlogon Notification Events, Microsoft corporation, Ovˇerˇ eno 19. kvˇetna 2010, . 4.4.1 [8] Autor vystupující pod pˇrezdívkou cdkid: MySQL UDFs, Ovˇerˇ eno 19. kvˇetna 2010, . 4.4.3 [9] Flesner, A.: AutoIt v3: Your Quick Guide, O’Reilly Media, 2007, 0-596-55801-5, . 5
23
Pˇríloha A
Pˇriložené CD K této bakaláˇrské práci je pˇriložen kompaktní disk s následujícím obsahem: •
Text této bakaláˇrské práce ve formátech XML a PDF.
•
Použité obrázky ve formátu PNG.
•
Zdrojové kódy aplikací ConnectDrive, GetInfo a ScriptDemo.
•
Zkompilované aplikace ConnectDrive, GetInfo a ScriptDemo.
•
Instalaˇcní soubory AutoIt v3, SciTE4AutoIt3 a Koda FormDesigner
24