Smitka development

Java Scripty ve Windows

Tento článek je volné pokračování článku o HTA apikacích a většina použitých metod lze aplikovat i do HTA. HTA je vlastně jen uživatelské prostředí pro skripty.

Java Scripty jsou soubory s příponou .js a jsou uloženy jako prostý text. Pravidla pro psaní samotných Java Scriptů jsou podobná těm v HTML strákách, pouze nepoužíváte tag <SCRIPT> a píšete rovnou script.
Budeme se věnovat použití ActiveX nabízených samotným Windowsem (musíte mít nainstalován Windows Scripting Host, bývá součástí instalace Windows)

Podíváme se na objekt WScript.Shell.

definice: var ws = new ActiveXObject("WScript.Shell");
S tímto objektem jsem pracovali již v článku o HTA aplikacích. Používali jsme jej pro spouštění programů (ws.Run()) , pro zobrazení okna se zprávou (ws.Popup()) a pro čtení z registrů (ws.RegRead()), do registrů samozřejmě můžete také zapisovat hodnoty (ws.RegWrite()) a mazat je (ws.RegDelete()).

Spousta legrace se dá užít s funkcí AppActivate("jméno aplikace"). Pomocí této funkce se "nabouráte" do běžící aplikace pomocí další funkce SendKeys("znaky") jí můžete posílat klávesy, jako byste s aplikací pracovali. Bude se nám také hodit metoda samotného WScriptu pro zapauzování skriptu na několik milisekund - WScript.Sleep(ms).

Příklad:
var ws = new ActiveXObject("WScript.Shell"); ws.Run("notepad"); WScript.Sleep(200); //spuštění Poznámkového bloku pro demonstraci a chvilka čekání na spuštění ws.AppActivate("blok"); //Ve jméně aplikace musí být napsán název, který se zobrazuje např. na liště úloh. Může být použit i jen koncová část jména ws.SendKeys("Ahoj");
Nemusíte se ovšem spokojit je s posíláním znaků. Lze také posílat funkční klávesy atd.
V této tabulce jsou uvedeny další kláves s parametrem, který je nutno použít v řetězci funkce SendKeys.
Klávesa Parametr
BACKSPACE {BACKSPACE}, {BS}, {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DELETE {DELETE},{DEL}
ŠIPKA DOLÙ {DOWN}
END {END}
ENTER {ENTER},~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INSERT {INSERT},{INS}
ŠIPKA VLEVO {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
ŠIPKA VPRAVO {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
ŠIPKA NAHORU {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
SHIFT +
CTRL ^
ALR %

Příklad použití dalších kláves:
1. Spuštění poznámkového bloku
2. Zápis do poznámkového bloku s použitím ENTERu
3. Zablikání kontrolky Scroll Lock
4. Ukončení poznámkového bloku bez uložení

var ws = new ActiveXObject("WScript.Shell"); ws.Run("notepad"); WScript.Sleep(200); //spuštění Poznámkového bloku pro demonstraci a chvilka čekání na spuštění ws.AppActivate("blok"); //Ve jméně aplikace musí být napsán název, který se zobrazuje např. na liště úloh. Může být použit i jen koncová část jména ws.SendKeys("Ahoj{ENTER}Nový řádek pomocí {{}ENTER{}}.~Nový řádek, tentokrát použitím tidly {~}."); WScript.Sleep(1000); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(200); ws.SendKeys("{SCROLLLOCK}"); WScript.Sleep(1000); ws.SendKeys("%{F4}"); //Klávesová zkratka Alt+F4 pro ukončení programu WScript.Sleep(10); ws.SendKeys("{TAB}~"); //Vyvolá se dialogové okno - Chcete uložit soubor?, fokus nastaven na Ano //tabulátor přesune fokus na Ne a Enter potvrdí
Může se stát, že potřebujete použít znaky použité pro příkazy např.{, řešení je jednoduché - napíšete znk jako příkaz, tedy {{} napíše složenou závorku, {+} napíše plus, {[} napíše hranatou závorku, atd.

K tomuto tématu ještě jeden zajímavý příklad - simulátor psaní na klávesnici

var ws = new ActiveXObject("WScript.Shell"); ws.Run("notepad"); WScript.Sleep(300); var str="Ahoj{BS}{BS}{BS}{BS}Dobrý den{ENTER}Píšeme text~a píšeme~a píšeme~...~~Nashledanou!"; //v proměnné str je uložen celý text, který chceme napsat včetně příkazů //celý text musí samozřejmě být napsaný na jednom řádku var speed=200; //proměnnou speed nastavujeme rychlost psaní var tempcnt=0; var istmp=0; var i=0; while (i<str.length) { if (str.substr(i,1)=="{") istmp=1; if (str.substr(i,1)=="}") istmp=2; if (istmp==0) typer(str.substr(i,1)); if (istmp==1) tempcnt++; if (istmp==2) {typer(str.substr(i-tempcnt,tempcnt+1)) ;istmp=0; tempcnt=0}; i++; } function typer(chr){ ws.AppActivate("blok"); ws.SendKeys(chr); WScript.Sleep(speed); };

Z dalších možností je zajímavá schopnost vytvářet zástupce a práce se systémovými složkami. V dalším příkladu si ukážeme jak vytvořit na plochu zástupce Poznámkového bloku a přiřadit mu klávesovou zkratku. To vše díky funkci ws.CreateShortcut()

var ws = WScript.CreateObject("WScript.Shell"); //toto je další možnost, jak definovat objekt WScript.Shell, //ale já osobně raději používám předchozí způsob var desktop = ws.SpecialFolders("Desktop"); //z proměnné desktop si uděláme odkaz na složku s plochou OS var lnk = ws.CreateShortcut(desktop + "\'\'Skriptový zástupce.lnk"); //zde je již na ploše vytvořený zástupce, musí se mu jen nastavit parametry lnk.TargetPath = "%windir%\'\'notepad.exe"; //odkaz na program, lze použít systémových proměnných jako jsou //%windir%,%temp%,... lnk.WindowStyle = 1; //spustit v normálním okně - 1 //v maximalizovaném okně - 3 //v minimalizovaném okně - 7 lnk.Hotkey = "Ctrl+Alt+e"; //klávesová zkratka lnk.IconLocation = "notepad.exe, 0"; //cesta k ikoně lnk.Description = "Vyskriptovaný zástupce"; //popisek zástupce lnk.WorkingDirectory = desktop; //pracovní adresář - většinou není nutné lnk.Save(); //a nakonec uložení parametrů
Jako parametr SpecialFolders() lze použít: AllUsersDesktop, AllUsersStartMenu, AllUsersPrograms, AllUsersStartup, Desktop, Favorites, Fonts, MyDocuments, NetHood, PrintHood, Programs, Recent, SendTo, StartMenu, Startup a Templates.

Další funkce WScript.Shell jsou:
ws.Exec("program") - spustí program, ale oproti ws.Run lze zjišťovat např. jeho stav (spuštěný, ještě nespuštěný)
ws.ExpandEnvironmentStrings("%systémová proměnná%") - zjistí cestu k systémové proměnné např. var win = ws.ExpandEnvironmentStrings("%WinDir%") zapíše např. c:\'windows.
linkuj.czjagg.czpošli na vybrali.sme.skdeliciousTopČlánky.cz
Nahoru HOME PC•Elektro Programování Blog Autor Lynt Speciální backlink: Šulislav
© 2006 Smitka development