Smitka development

HTA aplikace

HTA, neboli HTML Application je technologie vyvinutá Microsoftem pro Internet Explorer 5+, díky které se webové stránky mohou chovat jako aplikace (spustí se v samostatném okně a mají přístup k funkcím systému). Jde vlastně o zrušení bezpečnostních pravidel pro skripty a přístup k dalším funkcím JavaScriptu (JScriptu), jako je práce s registry, se soubory, spouštění spustitelných souborů, práce s DLL knihovnami,...

Soubor HTA vytvoříte jednoduše změněním přípony .htm na .hta, vaše stránka se tak spustí v "aplikačním okně". Vzhled a chování okna můžete upravit přidáním HTA hlavičky mezi tagy <HEAD>: <HTA:APPLICATION ICON="ikona.ico" ID = "id aplikace" APPLICATIONNAME = "jediněčný název aplikace(lze z jiných programůzjistit, zda běží)" BORDER = "typ okraje: thick,thin none,dialog" BORDERSTYLE = "styl okraje:normal,complex,raised,static,sunken" CAPTION = "titulní lišta (modrý proužek):yes/no" SHOWINTASKBAR = "zabrazení v seznamu úloh:yes/no" SINGLEINSTANCE = "spustitelnost více instancí:yes/no" SYSMENU = "zobrazení tlačítk pro zavření, maximalizaci...:yes/no" WINDOWSTATE = "velikost okna:normal,maximized,minimalized" SCROLL = "skrolování:yes/no" SCROLLFLAT = "hezké ploché scrollbary:yes/no" VERSION = "verze aplikace:1.0" INNERBORDER = "vnitřní okraj(styl normal pak vypadá jako complex):yes/no" SELECTION = "možnost označovat text:yes/no" MAXIMIZEBUTTON = "yes/no" MINIMIZEBUTTON = "yes/no" NAVIGABLE = "yes/no" CONTEXTMENU = "yes/no"> Výsledná aplikace může vypadat třeba takto:
Ukázka výsledné aplikace

Funkce HTA

Nejdůležitější vlastností je možnost načtění ActiveX používaných Windows. To se provede příkazem v JavaScriptu:
var act = new ActiveXObject("nějaké ActiveX");

Pro práci se soubory se musí načíst ActiveX Scripting.FileSystemObject, například:
<SCRIPT LANGUAGE="JavaScript"> var fso = new ActiveXObject("Scripting.FileSystemObject"); var soubor = fso.CreateTextFile("c:\'\'HTA_test.txt", true); soubor.WriteLine("Pokusný soubor vytvořený aplikací HTA"); soubor.Close(); </SCRIPT> Tento skript vytvoří textový soubor a zapíše do něj text, stažení ukázky.
Další funkce FileSystemObject:Close, Copy, CopyFile, CopyFolder,CreateFolder, CreateTextFile, Delete, DeleteFile, DeleteFolder, FileExists, FolderExists, Move, MoveFile, MoveFolder, OpenAsTextStream, OpenTextFile, Read, ReadAll, ReadLine, Write, WriteLine.


Ke spouštění programů slouží Wscript.Shell: <SCRIPT LANGUAGE="JavaScript"> var ws = new ActiveXObject("WScript.Shell"); ws.Run("cesta k souboru .exe"); </SCRIPT> Podobně můžeme spustit funkce z DLL knihoven, stačí jako cestu k souboru dát "rundll32 knihovna,parametry", tedy: <SCRIPT LANGUAGE="JavaScript"> var ws = new ActiveXObject("WScript.Shell"); ws.Run("rundll32 shell32,ShellAboutA"); </SCRIPT> Takto se zobrazí informace o systému pomocí knihovny shell32.dll, stažení ukázky.
tip
Jaké funkce knihovna obsahuje zjistíte tak, že ji otevřete v nějakém editoru umožňujícím vyhledávání (integrovaný prohlížeč v Total Commanderu) a vyhledáte jméno knihovny i s příponou, za ním jsou uvedeny funkce, které lze volat (někdy je v knihově více řetězců se jménem knihovny, ale pouze za jedním jsou uvedeny funkce)

Tento ActiveX obsahuje i funkce pro práci s registry: <SCRIPT LANGUAGE="JavaScript"> var ws = new ActiveXObject("WScript.Shell"); var cesta="HKLM\'\'SOFTWARE\'\'Microsoft\'\'Windows\'\'CurrentVersion\'\'version"; ws.Popup(ws.RegRead(cesta)); </SCRIPT> Spuštěním tohoto skriptu se do vyskakovacího okna vytvořeného ActiveXkem vypíše verze Windows načtená z registru, stažení ukázky.

Pokud se chcete dozvědět víc, určitě si přečťete článek o Java Scriptech ve Windows
komentáře komentáře (10)


Kolik je 4+3?

Vladimír Smitka - 31.10.2009 13:20
Myslím, že k tomuto používat HTA není zrovna dobré řešení... PHP skripty by se měly zpracovávat na serveru... Ale když už bys to tak chtěl udělat, tak samotné PHP nemusí běžet přes apache, ale je možné použít php.exe, který ti skript zpracuje. K tomu by mělo stačit vzít distribuční balík PHP a skripty si k němu volat z HTA javascriptem: alert(ws.Exec("php.exe test.php";)
.StdOut.ReadAll());
nN - 31.10.2009 12:11
Jak spustim v HTA podporu PHP? co nejjednoduseji.. napr aby si pri ditribuci klient nemus instalovat zvlast Apache atd..? jde nejakym zpusobem vlozit knihovnu pod kterou to pobezi? dik za rady
Vladimír Smitka - 15.12.2007 10:08
Dořešeno po mailu
jozef - 26.11.2007 13:01
hej, presne tak, len neviem ako mam tie comboboxy zadefinovat a rozlíšiť ked ich je viac
Vladimír Smitka - 24.11.2007 12:31
Pokud jsem to správně pochopil, tak potřebuješ comboboxům dát určité ID a pak hodnotu zjišťovat pomocí document.getElementById('id').value
jozef - 23.11.2007 14:02
sorry ze otravujem este. ale v hta aplikácií mam 3 comboboxy, a potrebujem, aby mi z kazdého načítalo zvolenú hodnotu po stlacení "ok". ako sa dajú oznacit jednotlivé comboboxy? skusal som ComboBox3.List = .... , ale nefunguje to.
jozef - 22.11.2007 11:41
diki za radu
Vladimir Smitka - 21.11.2007 16:31
S comboboxy by nemel byt problem, melo by to jit jako bezny formularovy prvek select s nastavenou size=1:
<select size="1">
<option value="1" selected="selected">moznost 1</option>
<option value="2">moznost 2</option>
<option value="3">moznost 3</option>
</select>
jozef - 02.11.2007 07:30
mal by som otazku ohladne comboboxov v hta. daju sa vytvorit a ako? diki za odpoved.
jozef - 02.11.2007 07:28
potreboval by som poradit ohladne comboboxov v hta aplikácií. dajú sa vytvorit? a ak hej, bolo by mozne popísat ako? diki

linkuj.czjagg.czpošli na vybrali.sme.skdeliciousTopČlánky.cz
Nahoru HOME PC•Elektro Programování Blog Autor
© 2006 Smitka development