Craftcom > Windows > Windows XP > Úpravy > AutoIt
Verze pro tisk
AutoIt 3, úvod


AutoIt 3 je jednoduchý skriptovací jazyk, pomocí kterého lze zautomatizovat spoustu činností v grafickém rozhraní Windows. Jedná se o kompletní vývojové prostředí s vlastním jazykem AutoIt 3 a bohatou nápovědou se spoustou vzorových řešení.

Programům v jazyku AutoIt říkáme skripty (textový soubor s příponou au3). Jsou určeny většinou pro řešení konkrétních úloh ve Windows; jazyk AutoIt je podobný moderním programovacím jazykům (např. Pascal). Skripty psané v AutoItu lze i velice jednoduše kompilovat do spustitelného souboru (.exe), tj. na počítači kde se bude tento program spouštět není nutné mít AutoIt nainstalován.


Skript mimo jiné dokáže:
spouštět aplikace (programy) ve Windows
simulovat stisknutí kláves
simulovat pohyb a stisknutí tlačítka myši
manipulovat s okny (přesun, změna velikosti)
přímo manipulovat s prvky okna (např. zjistit nebo zadat text, …)


*
Tento článek si klade za cíl jen seznámení s prostředím a jazykem AutoIt, nejedná se o náhradu nápovědy dodané s programem ani kompletní výčet možností práce s AutoItem...



V čem psát skripty?
Protože skript je obyčejný textový soubor, jsou vhodné jednoduché textové editory, které ukládají text bez formátování. Můžeme tedy použít Poznámkový blok nebo další textové editory jako TextPad, UltraEdit nebo výborný free český editor PSPad. Každý skript uložíme s příponou .au3


Stručný úvod do jazyka AutoIt


*
Jedná se opravdu jen o velmi stručný úvod a nejde o učebnici programování! Článek si klade za cíl jen informativní seznámení...



Datové typy:

AutoIt používá jen jeden datový typ variant, který může obsahovat číselné hodnoty a „znakové hodnoty“, tedy řetězce (příkladem řetězce je „tento text“). Řetězec vždy zapisujeme do uvozovek.

* Datový typ určuje typ uložené hodnoty v proměnné (viz dále) a možné operace s ní. Např. v Pascalu máme datový typ char, proměnná typu char může obsahovat právě jeden znak; pro uložení textových řetězců zase slouží datový typ string. Jiným datovým typem v Pascalu je integer, určený pro uložení celého čísla. Dalším datovým typem (opět v Pascalu) je boolean, pro uchování logické hodnoty pravda/nepravda (true/false). Naproti tomu v AutoItu je „univerzální“ datový typ variant, proměnná může obsahovat „cokoli“, tj. text, číslo, logickou hodnotu...


Proměnné:

Proměnná je místo v operační paměti RAM, která je určitého typu (v AutoItu existujr pouze univerzální typ variant) a obsahuje konkrétní hodnotu. Proměnná má svůj identifikátor (název) uvozený znakem $ („dolar“), např.: $datum, $pocet, $index a svoji hodnotu („obsah“). Proměnné se v AutoItu nemusí deklarovat (deklarace proměnných tedy na rozdíl od jiných programovacích jazyků není povinná, obecně se ale doporučuje). Deklarací proměnné se myslí takový zápis ve skriptu, kdy „zavádíme“ novou proměnnou jedním ze 4 možných způsobů deklarace pomocí klíčových slov Dim, Global, Local a Const. Pokud deklarujeme konstantu (Const), nelze ve skriptu měnit její hodnotu.

Pro názornost deklarace několika proměnných a konstant:
Dim $a, $b, $c – deklarování tří proměnných, jejich hodnota není zatím definována
Dim $a = 2, $b, $c = 20 – proměnné $a a $c jsou inicializovány (mají přiřazenu výchozí hodnotu; nejedná se však o konstanty), hodnota proměnné $b není zatím definována
Const $a = 2, $b = „Hi“, $c = 20 – deklarace tří konstant

* Jazyk AutoIt je case-insensitive, tj. nerozlišují se malá a velká písmena v názvech proměnných a funkcí.

* Z matematiky známe např. proměnnou x. Počítáme-li lineární rovnici, je výsledek určitá konkrétní hodnota proměnné x. Např. 2*x-2 = 0 vyřešíme jako x = 1. Stejně tak lze vyčíslit hodnotu výrazu 4*x-8, jestliže víme, že x = 5. Ve skriptech tedy používáme proměnnou tam, kde je nutné použít určitou hodnotu (ať už číslo, textový řetězec, logickou hodnotu), která není známa při psaní skriptu, ale hodnota této proměnné se určí např. výpočtem, zadáním uživatelem, zjištěním ze souboru atd.


Makra:

Makro je speciální proměnná určená pouze ke čtení (lze tedy zjistit její hodnotu, „obsah“, ale nelze ji změnit), uvozené speciálním znakem @ („zavináč“). Příkladem je třeba makro @ComputerName obsahující název počítače, @DeskTopDepth udávající bitovou barevnou hloubku, @Year obsahující čtyřznakové označení aktuálního roku (např. 2006).

* Makro se používá v podstatě stejně jako proměnná, avšak s tím rozdílem, že do makra nemůžeme (na rozdíl od proměnné) přiřadit vlastní hodnotu.


Operátory:

Operátory umožňují provádět s proměnnými aritmetické a logické operace, např. (jsou uvedeny jen některé operátory; konkrétní použití viz nápověda).:

+, -, *, /, NOT, =, <, >=, AND, OR


Podmíněné příkazy:

Aby bylo možné ve skriptech větvení programu, jsou použity podmíněné příkazy; AutoIt nabízí dvě konstrukce a to

If … Then … Else – If podmínka Then příkaz1 Else příkaz2
Select … Case

Select
Case podmínka1 příkaz1
Case podmínka2 příkaz2

Case podmínkaN příkazN
EndSelect


*
Normálně program (skript) provádí příkazy v tom pořadí, jak jsou zapsány od začátku do konce skriptu. Velmi často však musíme reagovat na určité podmínky a přizpůsobit jim „běh“ programu. V takovém případě používáme podmíněné příkazy.



Cykly:

Cyklus slouží k opakování (jednoho nebo více) příkazů při provádění skriptu.
For … Next – cyklus se známým počtem opakování (při programování víme, kolikrát se má cyklus provést). For $proměnná = počáteční_hodnota to konečná_hodnota příkaz(y) Next

* Např. cyklus, který se provede desetkrát (řídící proměnná cyklu je i, nejprve má hodnotu 1, v každém průběhu cyklu se o jedničku zvýší, poslední běh cyklu se provede s hodnotou 10)

For i=$1 to 10
nějaký_příkaz
Next


While … WEnd – cyklus s neznámým počtem opakování s podmínkou na začátku cyklu; příkazy uvnitř cyklu se provádí tak dlouho, dokud je splněna podmínka za While. While podmínka příkaz(y) WEnd. Podmínka se testuje vždy na začátku cyklu, pokud není splněna, příkazy uvnitř cyklu se neprovedou a skript pokračuje následujícím příkazem za WEnd.

Pozn.: Např. cyklus, který se bude provádět tak dlouho (neznáme počet opakování), dokud proměnná $cislo bude větší než nula.
While $cislo > 0
nějaký_příkaz
WEnd

Do … Until - cyklus s neznámým počtem opakování s podmínkou na konci cyklu; příkazy uvnitř cyklu se provádí tak dlouho, dokud je splněna podmínka za Until. Do příkaz(y) Until podmínka. Podmínka se testuje vždy na konci cyklu, pokud není splněna, příkazy uvnitř cyklu se již znovu neprovedou a skript pokračuje následujícím příkazem za Until. Tento cyklus se provede vždy nejméně jednou.

* Cyklus se bude provádět do té doby, než proměnná počet nabude hodnoty 10

Do
nějaký_příkaz
Until $pocet = 10



Funkce:

Funkce jsou ucelené části kódu, které mohou být kdykoli volány; každá funkce vrací hodnotu (i když jsou případy, kdy se toho nevyužívá). AutoIt rozděluje funkce na vestavěné (vytvořené autorem jazyka AutoIt) a uživatelsky definované (naše vlastní funkce). Funkce má svůj identifikátor (název) a kulaté závorky, do kterých se zapisuje výraz (argument funkce), např. Abs ($proměnná) vrací absolutní hodnotu. Nejčastější způsob volání funkce je takový, kdy proměnné přiřadíme hodnotu vrácenou funkcí, kterou voláme, např. $proměnná = funkce(argument1, argument2)

* Z matematiky známe funkci y = sin(x). Proměnná y je tzv. funkční hodnota („to co vrátí funkce“), sin je funkce sinus a x je argumentem funkce. Tj. „voláme“ funkci sinus s argumentem x (za x dosadíme konkrétní číslo) a funkce nám vrátí jinou číselnou hodnotu (y), která je sinem čísla x.


Pole:

Hodně funkcí vrací výsledek ve formě pole. Zjednodušeně řečeno je pole datová struktura n prvků pole přístupných přes index pole, zapsaný v hranatých závorkách za názvem pole. Například názvy jednotlivých dnů v týdnu si můžeme představit jako prvky pole týden:
$týden[1]=“Po“
$týden[2]=“Út“
$týden[3]=“St“

$týden[7]=“Ne“


Komentáře:

Pro snadnější orientaci ve skriptu je dobré vpisovat komentáře; nejedná se o příkazy skriptu, ale o poznámky programátora. Řádek komentáře začíná buď znakem ; („středník“) nebo # („dvojitý kříž“). Text do konce řádku je ignorován.


Příklady skriptů:
Na závěr si uvedeme několik příkladů skriptů, které budou demonstrovat schopnost AutoItu. Nejdříve se seznámíme s funkcí MsgBox(), která vytvoří jednoduché dialogové okno se zprávou (toho budeme ve skriptech využívat nejčastěji). Celá syntaxe (tvar zápisu) vypadá následovně:

MsgBox ( flag, "title", "text" [, timeout] )

Prvním argumentem je flag, který určuje typ dialogu a zejména tlačítka: může nabývat hodnot např. 0 (tlačítko OK), 1 (OK a Storno), 3 (Ano, Ne, Storno), atd. (viz nápověda k funkci MsgBox).

Druhým argumentem je název okna, title. Jedná se o textový řetězec (zapisujeme do uvozovek), který se zobrazí v titulním pruhu okna.

Třetím argumentem je obsah zprávy, kterou sdělujeme uživateli. Může se jednat o prostý text (méně časté) nebo v kombinaci s proměnnými o sdělení určité hodnoty (daleko častější případ).

Čtvrtý argument je nepovinný (v zápisu syntaxe je v hranatých závorkách) a udává počet sekund, kdy bude zpráva zobrazena. Není-li uveden, dialogové okno se zprávou se zavře až klepnutím uživatele na příslušné tlačítko.

a). zobrazení textové hodnoty v dialogovém okně (text.au3)

; Ukázka použití funkce MsgBox () vypsáním textové hodnoty
MsgBox (0, "skript text.au3", "www.craftcom.net")


b).
zobrazení hodnoty proměnné v dialogovém okně (prom.au3)

; Ukázka použití funkce MsgBox () vypsáním hodnoty proměnné
; do proměnné $text přiřadíme textovou hodnotu (textový řetězec) "www.craftcom.net"
; do proměnné $rok přiřadíme aktuální rok využitím makra @Year

$text = "www.craftcom.net"

; Ve funkci MsgBox použijeme operátor & pro spojení celkem tří řetězců:
; první je uložen v proměnné $text, druhý je mezera (zapsaná do uvozovek),
; třetí je makro @Year, které vrací aktuální rok jako textovou hodnotu
MsgBox (0, "skript prom.au3", $text & " " & @Year)


c). zjištění velikosti operační paměti RAM (memory.au3)
; Ukázka použití funkce MemGetStats() a zobrazení obsahu okna ve více řádcích

; Funkce MemGetStats() vrací pole hodnot s následujícím významem
; $array[0] = Memory Load (Percentage of memory in use) ... Procento obsazené RAM
; $array[1] = Total physical RAM ... Celková RAM
; $array[2] = Available physical RAM ... Volná fyzická RAM
; $array[3] = Total Pagefile ... Velikost swap souboru
; $array[4] = Available Pagefile ... Volné místo swap souboru
; $array[5] = Total virtual ... Celková virtuální paměť = Celková RAM + Velikost swap
; $array[6] = Available virtual ... Volná virtuální paměť

; All memory sizes are in kilobytes. ... Všechny hodnoty jsou v kilobajtech

; Do proměnné Memory se uloží výsledek volání funkce MemGetStats; výsledek je pole 7 hodnot
; Každá hodnota je přístupná přes index pole, např. volná fyzická paměť je dostupná přes index s hodnotou 2, tj. $Memory[2]
; Makro @CRLF slouží k odřádkování

$Memory = MemGetStats()
MsgBox (0, "skript paměť.au3", "Celková RAM: " & $Memory[1] & " kB" & @CRLF & "Volná RAM: "& $Memory[2] & " kB" & @CRLF)


d).
vypsání aktuálního data a času

; Ukázka použití maker pro získání data a času

MsgBox (0, "skript datum.au3", "Aktuální datum " & @Year & " " & @Mon & " " & @MDay & @CRLF & "Aktuální čas " & @Hour & ":" & @Min & ":" & @Sec)


*
Pozor na zalamování řádků při vkládání skriptů do textového editoru (Poznámkový blok, PSPad, …), tj. pokud odkudkoli vkládáte zdrojový text skriptu, dejte si pozor na konce řádků (aby každý příkaz byl na samostatném řádku a nikoli rozdělen na dva nebo více řádků).



Kompilování skriptů (au3 -> exe)

Pokud máme skript ve zdrojovém tvaru (textový soubor s příponou au3 zapsaný v jazyku AutoIt 3), můžeme ho spouštět jen na počítači, kde je AutoIt nainstalován. Aby byl skript spustitelný na libovolném počítači s WinXP, lze ho jednoduše zkompilovat do spustitelného souboru (s příponou exe). To můžeme např. provést tak, že klepneme pravým tlačítkem na soubor s naším skriptem (souboro s příponou .au3) a z kontextové nabídky zvolíme příkaz Compile Script. Tím se nám vytvoří spustitelný soubor (.exe), který lze spouštět na libovolném počítači (s operačním systémem Windows).



Pěkné programování přeje Pavel :-)


© 2005 - 2011 Craft, craftcom.net
Všechna práva vyhrazena.
Šíření a kopírování textů, obrázků a jiných záznamů je bez předchozího souhlasu zakázáno.
Stránky vyhovují standardům: HTML 4.01 · CSS 2 · RSS 2
Čas zpracování: 100.640 ms