Verzia pre tlač
AutoIt 3
je jednoduchý
skriptovací jazyk, pomocou ktorého možno zautomatizovať veľa činností v grafickom rozhraní Windows. Jedná sa o kompletné vývojové prostredie s
vlastným jazykom AutoIt 3 a bohatým pomocníkom s mnohými vzorovými riešeniami.
Programom v jazyku AutoIt hovoríme
skripty
(textový súbor s príponou au3). Sú určené väčšinou na riešenie konkrétnych úloh vo Windows; jazyk AutoIt je podobný moderným programovacím jazykom (napr. Pascal). Skripty napísané v AutoIt-e sa dajú veľmi jednoducho kompilovať do spustiteľného súboru (.exe), tj. na počítači, kde sa bude tento program spúšťať nie je nutné mať AutoIt nainštalovaný.
Skript okrem iného dokáže:
spúšťať aplikácie (programy) vo Windows
simulovať stlačenie klávesov
simulovať pohyb a stlačenie tlačidla myši
manipulovať s oknami (presun, zmena veľkosti)
priamo manipulovať s prvkami okna (napr. zistiť alebo zadať text, …)
*
Tento článok si kladie za cieľ len zoznámenie s prostredím a jazykom AutoIt, nejedná sa o náhradu pomocníka dodaného s programom ani kompletný výpočet možností práce s AutoIt-om...
V čom písať skripty?
Pretože skript je obyčajný textový súbor, sú vhodné jednoduché textové editory, ktoré ukládajú text bez formátovania. Môžeme teda použiť Poznámkový blok alebo ďalšie textové editory ako TextPad, UltraEdit alebo výborný free český editor
PSPad
. Každý skript uložíme s príponou
.au3
Stručný úvod do jazyka AutoIt
*
Jedná sa naozaj len o veľmi stručný úvod a nejde o učebnicu programovania! Článok si kladie za cieľ len informatívne zoznámenie...
Dátové typy:
AutoIt používa len jeden dátový typ - variant, ktorý môže obsahovať číselné hodnoty a „znakové hodnoty“, teda reťazce (príkladom reťazca je „tento text“). Reťazec vždy zapisujeme do úvodzoviek.
*
Dátový typ určuje typ uloženej hodnoty v premennej (viď ďalej) a možné operácie s ňou. Napr. v Pascal-e máme dátový typ
char, premenná typu char
môže obsahovať práve jeden znak; pre uloženie textových reťazcov zase slúži dátový typ
string. Iným dátovým typom v Pascale je
integer, určený pre uloženie celého čísla. Ďalším dátovým typom (opäť v Pascale) je
boolean, pre uchovanie logickej hodnoty pravda/nepravda (true/false). Naproti tomu v AutoIt-e je „univerzálny“ dátový typ variant, premenná môže obsahovať „čokoľvek“, tj. text, číslo, logickú hodnotu...
Premenné:
Premenná je miesto v operačnej pamäti RAM, ktorá je určitého typu (v AutoIt-e existuje len univerzálny typ variant) a obsahuje konkrétnu hodnotu. Premenná má svoj identifikátor (názov) uvedený znakom $ („dolár“), napr.:
$datum,
$pocet,
$index a svoju hodnotu („obsah“). Premenné sa v AutoIt-e nemusia deklarovať (deklarácia premenných teda na rozdiel od iných programovacích jazykov nie je povinná, všeobecne sa ale odporúča). Deklaráciou premennej sa myslí taký zápis v skripte, kedy „zavádzame“ novú premennú jedným zo 4
možných spôsobov deklarácie pomocou kľúčových slov Dim, Global, Local a Const. Ak deklarujeme konštantu (Const), nemožno v skripte meniť jej hodnotu.
Pre názornosť deklarácie niekoľkých premenných a konštánt:
Dim $a, $b, $c
– deklarovanie troch premenných, ich hodnota nie je zatiaľ definovaná
Dim $a = 2, $b, $c = 20
– premenné $a a $c sú inicializované (majú priradenú predvolenú hodnotu; nejedná sa však o konštanty), hodnota premennej $b nie je zatiaľ definovaná
Const $a = 2, $b = „Hi“, $c = 20
– deklarácia troch konštánt
*
Jazyk AutoIt je case-insensitive, tj. nerozlišujú sa malé a veľké písmená v názvoch premenných a funkcií.
* Z matematiky poznáme napr. premennú x. Ak počítame lineárnu rovnicu, je výsledok určitá konkrétna hodnota premennej x. Napr. 2*x-2 = 0 vyriešime ako x = 1. Rovnako tak sa dá vyčísliť hodnota výrazu 4*x-8, ak vieme, že x = 5. V skriptoch teda používame premennú tam, kde je nutné použiť určitú
hodnotu (či už číslo, textový reťazec, logickú hodnotu), ktorá nie je známa pri písaní skriptu, ale hodnota tejto premennej sa určí napr. výpočtom, zadaním užívateľom, zistením zo súboru atď.
Makrá:
Makro je špeciálna premenná určená iba na čítanie (dá sa teda zistiť jej hodnota, „obsah“, ale nemožno ju zmeniť), uvedená špeciálnym znakom @ („zavináč“). Príkladom je napríklad makro
@ComputerName
obsahujúce názov počítača,
@DeskTopDepth
udávajúce bitovú farebnú hĺbku,
@Year
obsahujúce štvorznakové označenie aktuálneho roku (napr. 2006).
*
Makro sa používa v podstate rovnako ako premenná, avšak s tým rozdielom, že do makra nemôžeme (na rozdiel od premennej) priradiť vlastnú hodnotu.
Operátory:
Operátory umožňujú prevádzať s premennými aritmetické a logické operácie, napr. (sú uvedené len niektoré operátory; konkrétne použitie - viď pomocníka).:
+, -, *, /, NOT, =, <, >=, AND, OR
Podmienené príkazy:
Aby bolo možné v skriptoch vetvenie programu, sú použité podmienené príkazy; AutoIt ponúka dve konštrukcie a to
If … Then … Else
– If podmienka Then príkaz1 Else príkaz2
Select … Case
Select
Case podmienka1 príkaz1
Case podmienka2 príkaz2
…
Case podmínkaN príkazN
EndSelect
*
Normálne program (skript) prevádza príkazy v tom poradí, ako sú zapísané od začiatku do konca skriptu. Veľmi často však musíme reagovať na určité podmienky a prispôsobiť im „beh“ programu. V takom prípade používame podmienené príkazy.
Cykly:
Cyklus slúži k opakovaniu (jedného alebo viacerých) príkazov pri prevádzaní skriptu.
For … Next
– cyklus so známym počtom opakovaní (pri programovaní vieme, koľkokrát sa má cyklus previesť). For $premenná = počiatočná_hodnota to konečná_hodnota príkaz(y) Next
* Napr. cyklus, ktorý sa prevedie desaťkrát (riadiaca premenná cyklu je i, najprv má hodnotu 1, v
každom priebehu cyklu sa o jednotku zvýši, posledný beh cyklu sa prevedie s hodnotou 10)
For i=$1 to 10
nejaký_príkaz
Next
While … WEnd
– cyklus s neznámým počtom opakovaní s podmienkou na začiatku cyklu; príkazy cyklu sa prevádzajú tak dlho, pokiaľ je splnená podmienka za While. While podmienka príkaz(y) WEnd. Podmienka sa testuje vždy na začiatku cyklu, ak nie je splnená, príkazy cyklu sa nevykonajú a skript pokračuje nasledujúcim príkazom za WEnd.
Pozn.: Napr. cyklus, ktorý sa bude prevádzať tak dlho (nepoznáme počet opakovaní), pokiaľ premenná $cislo bude väčšia než nula.
While $cislo > 0
nejaký_príkaz
WEnd
Do … Until - cyklus s neznámym počtom opakovaní s podmienkou na konci cyklu; príkazy cyklu sa prevádzajú tak dlho, pokiaľ nebude splnená podmienka za Until. Do príkaz(y) Until podmienka. Podmienka sa testuje vždy na konci cyklu, ak nie je splnená, príkazy cyklu sa už znova nevykonajú a skript pokračuje príkazom nasledujúcim za Until. Tento cyklus sa prevedie vždy najmenej raz.
*
Cyklus sa bude prevádzať do tej doby, než premenná počet nadobudne hodnotu 10
Do
nejaký_príkaz
Until $pocet = 10
Funkcie:
Funkcie sú ucelené časti kódu, ktoré môžu byť kedykoľvek volané; každá funkcia vracia hodnotu (i keď sú prípady, kedy sa to nevyužíva). AutoIt rozdeľuje funkcie na vstavané (vytvorené autorom jazyka AutoIt) a užívateľsky definované (naše vlastné funkcie). Funkcia má svoj identifikátor (názov) a okrúhle zátvorky, do ktorých sa zapisuje výraz (argument funkcie), napr. Abs ($premenná) vracia absolútnu hodnotu. Najčastejší spôsob volania funkcie je taký, kedy premennej priradíme hodnotu vrátenú funkciou, ktorú voláme, napr. $premenná = funkcia(argument1, argument2)
*
Z matematiky poznáme funkciu
y = sin(x). Premenná
y
je tzv. funkčná hodnota („to čo vráti funkcia“),
sin
je funkcia sínus a
x je
argumentom funkcie. Tj. „voláme“ funkciu sínus s argumentom x (za x dosadíme konkrétne číslo) a funkcia nám vráti inú číselnú hodnotu (y), ktorá je sínusom čísla x.
Pole:
Veľa funkcií vracia výsledok vo forme poľa. Zjednodušene povedané je pole dátová štruktúra n prvkov poľa prístupných cez index poľa, zapísaný v hranatých zátvorkách za názvom poľa. Napríklad názvy jednotlivých dní v týždni si môžeme predstaviť jako prvky poľa týždeň:
$týden[1]=“Po“
$týden[2]=“Ut“
$týden[3]=“St“
…
$týden[7]=“Ne“
Komentáre:
Pre ľahšiu orientáciu v skripte je dobré vpisovať komentáre; nejedná sa o príkazy skriptu, ale o poznámky programátora. Riadok komentára začína buď znakom ; („stredník“) alebo # („dvojitý kríž“). Text do konca riadka je ignorovaný.
Príklady skriptov:
Na záver si uvedieme niekoľko príkladov skriptov, ktoré budú demonštrovať schopnosti AutoItu. Najskôr sa zoznámime s funkciou
MsgBox(), ktorá vytvorí
jednoduché dialógové okno so správou (to budeme v skriptoch využívať najčastejšie). Celá syntax (tvar zápisu) vypadá nasledovne:
MsgBox ( flag, "title", "text" [, timeout] )
Prvým argumentom je
flag, ktorý určuje typ dialógu a hlavne tlačidlá: môže nadobúdať hodnoty napr. 0 (tlačidlo OK), 1 (OK a Storno), 3 (Áno, Nie, Storno), atď. (viď pomocníka k funkcii MsgBox).
Druhým argumentom je názov okna,
title. Jedná sa o textový reťazec (zapisujeme do úvodzoviek), ktorý sa zobrazí v titulnom pruhu okna.
Tretím argumentom je obsah správy, ktorú oznamujeme užívateľovi. Môže sa jednať o prostý text (menej časté) alebo v kombinácií s premennými o oznámenie určitej hodnoty (oveľa častejší prípad).
Štvrtý argument je nepovinný (v zápise syntaxe je v hranatých zátvorkách) a udáva počet sekúnd, kedy bude správa zobrazená. Ak nie je uvedený, dialógové okno so správou sa zatvorí až kliknutím užívateľa na príslušné tlačidlo.
a).
zobrazenie textovej hodnoty v dialógovom okne (text.au3)
; Ukážka použitia funkcie MsgBox () vypísaním textovej hodnoty
MsgBox (0, "skript text.au3", "www.craftcom.net")
b).
zobrazenie hodnoty premennej v dialógovom okne (prom.au3)
; Ukážka použitia funkcie MsgBox () vypísaním hodnoty premennej
; do premennej $text priradíme textovú hodnotu (textový reťazec) "www.craftcom.net"
; do premennej $rok priradíme aktuálny rok využitím makra @Year
$text = "www.craftcom.net"
; Vo funkcii MsgBox použijeme operátor & pre spojenie celkovo troch reťazcov:
; prvý je uložený v premennej $text, druhý je medzera (zapísaná do úvodzoviek),
; tretí je makro @Year, ktoré vracia aktuálny rok ako textovú hodnotu
MsgBox (0, "skript prom.au3", $text & " " & @Year)
c).
zistenie veľkosti operačnej pamäte RAM (memory.au3)
; Ukážka použitia funkcie MemGetStats() a zobrazenia obsahu okna vo viacerých riadkoch
; Funkcia MemGetStats() vracia pole hodnôt s nasledujúcim významom
; $array[0] = Memory Load (Percentage of memory in use) ... Percento obsadenej RAM
; $array[1] = Total physical RAM ... Celková RAM
; $array[2] = Available physical RAM ... Voľná fyzická RAM
; $array[3] = Total Pagefile ... Veľkost swap súboru
; $array[4] = Available Pagefile ... Voľné miesto swap súboru
; $array[5] = Total virtual ... Celková virtuálna pamäť = Celková RAM + Veľkosť swap
; $array[6] = Available virtual ... Voľná virtuálna pamäť
; All memory sizes are in kilobytes. ... Všetky hodnoty sú v kilobajtoch
; Do premennej Memory sa uloží výsledok volania funkcie MemGetStats; výsledok je pole 7 hodnôt
; Každá hodnota je prístupná cez index poľa, napr. voľná fyzická pamäť je dostupná cez index s hodnotou 2, tj. $Memory[2]
; Makro @CRLF slúži k odriadkovaniu
$Memory = MemGetStats()
MsgBox (0, "skript pamäť.au3", "Celková RAM: " & $Memory[1] & " kB" & @CRLF & "Voľná RAM: "& $Memory[2] & " kB" & @CRLF)
d).
vypísanie aktuálneho dátumu a času
; Ukážka použitia makier pre získanie dátumu a času
MsgBox (0, "skript datum.au3", "Aktuálny dátum " & @Year & " " & @Mon & " " & @MDay & @CRLF & "Aktuálny čas " & @Hour & ":" & @Min & ":" & @Sec)
*
Pozor na zalamovanie riadkov pri vkladaní skriptov do textového editora (Poznámkový blok, PSPad, …), tj. ak odkiaľkoľvek vkladáte zdrojový text skriptu, dajte si pozor na konce riadkov (aby každý príkaz bol na samostatnom riadku a nie rozdelený na dva alebo viac riadkov).
Kompilovanie skriptov (au3 -> exe)
ak máme skript v zdrojovom tvaru (textový súbor s príponou au3 zapísaný v jazyku AutoIt 3), môžeme ho spúšťať len na počítači, kde je AutoIt nainštalovaný. Aby bol skript spustiteľný na ľubovoľnom počítači s WinXP, dá sa jednoducho skompilovať do spustiteľného súboru (s príponou exe). To môžeme previesť napr. tak, že klikneme pravým tlačidlom na súbor s našim skriptom (súbor s príponou .au3) a z kontextovej ponuky zvolíme príkaz Compile Script. Tým sa nám vytvorí spustiteľný súbor (.exe), ktorý možno spúšťať na ľubovoľnom počítači (s operačným systémom Windows).
Pekné programovanie praje
Pavel
:-)
>>
Pridať komentár k článku
<<
© 2007
Pavel Kříž
, www.craftcom.net
^
nahor
^
<
späť
<
|