WinMonitor / Objektový model

WinMonitor lze běžně ovládat vyvoláním některého příkazu z nabídky. Někdy je k dosažení určité informace nutné provést posloupnost příkazů. Jindy nemusí žádný běžný příkaz přesně odpovídat potřebám uživatele. Často je také třeba ovládat program pomocí myši. Tyto, a mnohé další případy lze řešit vytvořením makra, které podobně jako dávkový soubor v systému DOS provede automaticky požadovaný úkol.

V systému Windows je možné vytvářet makra pomocí takzvaných skriptů. Skript je textový soubor obsahující posloupnost příkazů, které se mají provést. Možnosti jsou rozsáhlé, protože z takového skriptu se lze odkázat na velké množství nainstalovaných programů a to nejen tak, že je lze spustit, ale také je po jejich spuštění ovládat. Při psaní skriptu je třeba dbát na způsob zápisu, je nutné použít programovací jazyk, v tomto případě je to buď Visual Basic Script nebo Java Script. V dalším popisu i příkladech bude použit jazyk Visual Basic.

Pomocí skriptů je možné ovládat jakýkoliv program, který zveřejňuje své funkce. Takto lze pracovat například s programy Office. Takový způsob ovládání je možný i pro WinMonitor. Při psaní skriptu je nejprve nutné odkázat se na WinMonitor, a následně pak využít jeho příkazů. Z programátorského hlediska se WinMonitor jeví jako objekt, který nabízí řadu možností (metod), jak jej použít. Odtud pojmenování této kapitoly - Objektový model.

Vytvořené skripty lze spouštět z nabídky WinMonitoru a přiřadit jim horké klávesy. Při úpravě ozvučení je také možné aktivovat skript po fokusu na určitý prvek okna.

Příklad jednoduchého skriptu

1.Přiřazení objektů a deklarace proměnných
Set objVoice = WScript.CreateObject("WinMonitor.Voice")
Set objMouse = WScript.CreateObject("WinMonitor.Mouse")
dim Xpos
dim Ypos
dim strName
dim strValue
dim strDescription
dim Role
dim State
2.Zjistíme polohu aktivního prvku a přesuneme tam kurzor myši.
Xpos = objMouse.GetActiveObjectX
Ypos = objMouse.GetActiveObjectY
call objMouse.MoveCursorInScreen(Xpos, Ypos)
 
3.Zjistíme typ a stav prvku.
Role = objMouse.GetRoleXY(Xpos, Ypos)
State = objMouse.GetStateXY(Xpos, Ypos)
4.Je-li to odkaz, přehrajeme zvuk tlačítka, jinak přehrajeme přiřazený zvuk
If (State And &H400000) then 
	call objVoice.Voice (6, &H1E, vbNullString)
Else
	call objVoice.Voice (6, Role, vbNullString)
End If
5.Je-li to odkaz, přehrajeme zvuk tlačítka, jinak přehrajeme přiřazený zvuk a ohlásíme jméno a hodnotu.
strName = objMouse.GetNameXY(Xpos, Ypos)
strValue = objMouse.GetValueXY(Xpos, Ypos)
call objVoice.Voice(2, 0, strName & ", " & strValue)

Nastavování hodnot skriptu z dialogu:

Součástí aplikační nabídky může být funkce nastavení. Tu lze doplnit úpravou nabídky, jako příklad může posloužit nastavení pro Word nebo nové ozvučení TotalCommanderu. Pro definici položky je použit typ spuštění skriptu, příkaz je:
$(appsetdir)\set.exe
Příkaz spouští program set.exe umístěný ve složce definičních souborů aplikace, například:
c:\program files\winmonitor\set\totalcmd
V této složce je také umístěn soubor frm.txt, určující, co bude po vyvolání nabídky program set.exe zobrazovat. Je možné upravit jméno okna a zobrazit ovládací elementy typu zaškrtávací tlačítko, textové editační pole a seznam. Hodnoty těchto elementů jsou vyčteny z určených míst a po ukončení tlačítkem OK tam zpětně zapsány. Každá položka je na zvláštním řádku, hodnoty jsou odděleny středníkem.

Příklad položek souboru frm.txt:

form;Nastavení Total Commander
Určení titulu dialogu
checkbox;Ohlásit;script.vbs;bRekniTo
Zobrazí se zaškrtávací tlačítko, titulek tlačítka, jméno skriptu kde je proměnná kterou budeme upravovat, jméno proměnné
textbox;Zadejte jméno souboru:;script.vbs;strPlayFile
Textové pole, titulek, jméno skriptu, jméno proměnné
listbox;Vyberte položku:;script.vbs;list_text;položka1;položka2;položka3
Seznam, titulek, soubor skriptu, jméno proměnné, výčet položek seznamu

V souboru skriptu, v tomto případě script.vbs, jsou pak umístěny na zvláštních řádcích přiřazení. Hodnoty proměnných se pak ve skriptu testují a určují jeho chování. Program set.exe při spuštění vyčte hodnotu a nastaví podle ní ovládací prvek dialogu. Po ukončení pak stav položky zapíše do skriptu. Například:

list_text="položka3"
Přiřazení hodnoty pro seznam, program set.exe při spuštění vyčte hodnotu a v zobrazeném seznamu vybere tuto položku. Po ukončení pak hodnotu vybrané položky zapíše do skriptu. Hodnota musí být v uvozovkách.
bRekniTo=1
Přiřazení hodnoty pro zaškrtávací tlačítko. Přípustné hodnoty jsou 0 a 1.
strPlayFile="title.wav"
Přiřazení hodnoty pro textové pole. Textová hodnota musí být v uvozovkách.

Příklad kódu, který zpracovává nastavení:

  if bRekniTo=1 then
    call objVoice.Voice(2, 0, "Tak to říkám.")
  end if 
 

Příklad ovládání uživatelského rozhraní programů

Skript může nejen sloužit k získání a následnému ohlášení informace z obrazovky, ale lze jej také využít k vytváření maker a tak usnadnit a automatizovat obsluhu programů. WinMonitor v tomto případě zajišťuje informaci o stavu programu, například o zobrazeném okně nebo dialogu a tak přesně časovat posloupnost jednotlivých příkazů nebo akcí. Vedle služeb WinMonitoru byl také vytvořen pomocný objekt WSH, který poskytuje další informační a řídící funkce.

Řízení programu Poznámkový blok

Skript zajistí jeho spuštění, následně zápis textu a uložení souboru. Nejprve je spuštěn program NOTEPAD.EXE. Než je ale možné posílat klávesové akce, je nutné počkat, dokud se okno programu neobjeví. K tomu slouží smyčka. Podobně je nutné počkat na dialog Uložit jako, který reaguje na zaslanou kombinaci ALT+F4. Pak je možné zadat jméno souboru. Tlačítko Uložit je obslouženo funkcí, která provede kliknutí myší na místo určené titulem okna a tlačítka.
Nakonec je třeba pamatovat na možnost, že soubor daného jména již existuje a tak je nutné obsloužit dotaz o přepisu souboru. Úplný obsah skriptu si můžete prohlédnout a také můžete skript vyzkoušet. K tomu je ovšem nutné mít spuštěný WinMonitor. Skript očekává vzhled a textový popis dialogů, který odpovídá systému Windows Vista.

Otevřít skript.

Spustit skript.

Zpracování kláves

Pokud jste si v předchozím příklad všimli příkazu pro zadání kláves, zjistili jste, že parametry jsou číselné hodnoty. Bude tedy praktické zjistit, jaké hodnoty odpovídají jednotlivým klávesám. Místo rozsáhlé tabulky přímo vyzkoušíme skript, který to zjistí. Skript běží ve smyčce, která se ukončí, pokud v dialogu stiknete ESCAPE nebo tlačítko Storno. Bude také ukončen pokud po určitou dobu nebudete používat klávesnici. Mějte na paměti, že stisknuté klávesy budou zpracovány v aktivním okně.

Otevřít skript.

Spustit skript.

Následuje varianta, kdy místo dialogu necháme hodnotu ohlásit hlasem WinMonitoru. Skript běží ve smyčce, která se ukončí, pokud stiknete ESCAPE. Bude také ukončen pokud po určitou dobu nebudete používat klávesnici.

Otevřít skript.

Spustit skript.

Další informace:

Textový soubor s deklaracemi funkcí objektového modelu WinMonitoru.

Nápověda k programování skriptů (v angličtině).

Zpět na : Obsah