HTA: Hypertext Application
Dieser Artikel bezieht sich auf eine veraltete Technologie.
Kurzfassung
HTA wurde mit dem Internet Explorer 5 von Microsoft eingeführt. Mit HTA wird es ermöglicht, einfache Anwendungen in HTML und JScript bzw. VBScript zu entwickeln, die Gebrauch von ActiveX-Komponenten machen können. Aufgrund von Sicherheitsproblemen wurde die Idee von HTA nicht weiter verfolgt.
Beschreibung
HTA war im Internet Explorer 5 von Microsoft integriert. Ausgesprochen bedeutet HTA HTML Application bzw. besser Hypertext Application, es handelt sich also um eine Technologie für HTML-basierte Anwendungen. Das kann man sich in etwa wie eine EXE-Datei unter Windows vorstellen; bei einem Doppelklick auf die Datei im Explorer öffnet sich ein Programm. Bei HTA verhält es sich ganz ähnlich, nur daß die Datei die Endung .hta
besitzt und vom Internet Explorer 5.0 abhängig ist.
Eine HTML-Anwendung ist nichts anderes als eine etwas modifizierte HTML-Datei. Wer sich mit HTML und JScript auskennt, kann mittels HTA sehr einfach eigene kleine Programme schreiben.
Vorteile
- Plattformunabhängig (theoretisch)
- Unabhängig von der Bildschirmauflösung
- Vorhandene HTML-Dateien können leicht in HTAs umgewandelt bzw. eingebunden werden
- Voller Zugriff auf das lokale Dateisystem (ohne Privilegien, wie z. B. bei Netscape der Fall)
Nachteile
- Sicherheitsgefahr
- Beschränkt auf die Technologien, die in HTML-Dateien genutzt werden können
- Abhängig vom Internet Explorer 5.0 und damit in der Praxis nicht plattformunabhängig
Aussehen einer HTA
Beispiel Hello World:
Beim Code der Anwendung handelt es sich um eine etwas erweiterte HTML-Datei. Die Erweiterung besteht in allen HTA-Dateien nur aus dem <hta:application …>
. Mit self.close()
läßt sich in JScript ein Fenster schließen. Da hier nur ein Fenster geöffnet ist, wird damit die Anwendung beendet.
Attribute
Attribute für das HTA-spezifische Element hta:application
(siehe Beispiel in der Einführung):
applicatioName
-
- Beschreibung: Setzt den Namen der Anwendung (auszulesen mit JScript).
- Werte: Zeichenkette
- Beispiel:
applicationName="azApp"
- Bemerkung: Muß gesetzt werden und eindeutig sein.
- JScript-Eigenschaft:
applicationName
- Standardwert: —
border
-
- Beschreibung: Bestimmt die Rahmenbreite des HTA-Fensters.
- Werte:
thick
,dialog window
,thin
,none
- Beispiel:
border="thin"
- Bemerkung: Nur gültig für Fenster mit Überschrift und Titel. Der Wert
none
hat zur Folge, daß die Minimieren- und Maximieren-Buttons sowie das Programmsymbol nicht angezeigt werden. Steht in Verbindung mit derborderStyle
-Eigenschaft, welche die Art des Rahmens festlegt. - JScript-Eigenschaft:
border
- Standardwert:
thick
borderStyle
-
- Beschreibung: Bestimmt die Art des Rahmens.
- Werte:
none
,complex
,raised
,static
,sunken
- Beispiel:
borderStyle="sunken"
- Bemerkung: Hat nur Auswirkung auf den inneren Rahmen.
- JScript-Eigenschaft:
borderStyle
- Standardwert:
normal
caption
-
- Beschreibung: Bestimmt, ob das Fenster eine Titelzeile besitzt.
- Werte:
yes
,no
- Beispiel:
caption="yes"
- Bemerkung: Ohne das Attribut werden keine Minimieren- und Maximieren-Buttons angezeigt.
- JScript-Eigenschaft:
caption
- Standardwert:
yes
icon
-
- Beschreibung: Bestimmt den Dateinamen des Symbols für die Anwendung.
- Werte: Zeichenkette
- Beispiel:
icon="datei.ico"
- Bemerkung: Die Grafik muß 32 × 32 Pixel groß sein und im Icon-Format vorliegen.
- JScript-Eigenschaft:
icon
- Standardwert: Systemsymbol
maximizeButton
-
- Beschreibung: Bestimmt, ob das Fenster einen Maximieren-Button besitzt.
- Werte:
yes
,no
- Beispiel:
maximizeButton="yes"
- Bemerkung:
caption
muß angezeigt werden. - JScript-Eigenschaft:
maximizeButton
- Standardwert:
yes
minimizeButton
-
- Beschreibung: Bestimmt, ob das Fenster einen Minimieren-Button besitzt.
- Werte:
yes
,no
- Beispiel:
minimizeButton="yes"
- Bemerkung:
caption
muß angezeigt werden. - JScript-Eigenschaft:
minimizeButton
- Standardwert:
yes
showInTaskBar
-
- Beschreibung: Bestimmt, ob die HTA in der Taskleiste erscheint.
- Werte:
yes
,no
- Beispiel:
showInTaskBar="yes"
- Bemerkung: Hat keine Auswirkung darauf, daß die Anwendung bei Alt+Tab erscheint.
- JScript-Eigenschaft:
showInTaskBar
- Standardwert:
yes
singleInstance
-
- Beschreibung: Bestimmt, ob nur eine Instanz der Anwendung laufen kann.
- Werte:
yes
,no
- Beispiel:
singleInstane="yes"
- Bemerkung: Die Anwendung wird durch den
applicationName
identifiziert, nicht durch den URL. - JScript-Eigenschaft:
singleInstance
- Standardwert:
no
sysMenu
-
- Beschreibung: Bestimmt, ob die HTA Systemschaltflächen (Icon, Maximieren- und Minimieren-Buttons) besitzt.
- Werte:
yes
,no
- Beispiel:
sysMenu="yes"
- Bemerkung: Sollte immer auf
yes
gesetzt sein. - JScript-Eigenschaft:
sysMenu
- Standardwert:
yes
version
-
- Beschreibung: Bestimmt die Version der HTA.
- Werte: Zeichenkette
- Beispiel:
version="1.4"
- Bemerkung: Die Version erscheint in den Eigenschaften der Anwendung.
- JScript-Eigenschaft:
version
- Standardwert: —
windowState
-
- Bestimmt die Anzeigegröße der HTA.
- Werte:
normal
,maximize
,minimize
- Beispiel:
windowState="maximize"
- Bemerkung:
normal
bedeutet, daß die Standard-Anzeigegröße des Internet Explorers übernommen wird.maximize
zeigt die Anwendung maximiert an,minimize
nur als Symbol in der Taskleiste. - JScript-Eigenschaft:
windowState
- Standardwert:
normal
commandLine
-
- Beschreibung: Enthält die Befehlszeilenargumente, mit denen die HTA gestartet wurde.
- Werte: Nur lesend
- Beispiel:
command = htaObj.commandLine
- Bemerkung: Gibt eine leere Zeichenkette zurück, wenn die HTA über HTTP gestartet wurde.
- JScript-Eigenschaft:
commandLine
- Standardwert: —
Befehlszeilenargumente
Viele Programmen nutzen sogenannte Befehlszeilenargumente. So werden zum Beispiel beim Aufruf eines Programms mit X:\command.hta -param1 -param2
die Parameter -param1
und -param2
an das Programm übergeben. In HTA lassen sich diese Parameter über die Eigenschaft commandLine
auswerten.
Namen der Datei festlegen
Über die Eigenschaft id
läßt sich der Name einer Anwendung bestimmen. Der Name spielt insofern eine Rolle, als die Eigenschaft commandLine
dem Namen zugeordnet ist, d. h., um die Eigenschaft auszulesen, ist z. B. folgender JScript-Code nötig:
Parameter auswerten
In der ersten Zeile wird zunächst einmal die komplette Befehlszeile samt Aufruf des Programms in einem Meldungsfeld ausgegeben.
Um die Parameter geordnet in einem Array zu speichern, werden zuerst alle Leerzeichen (replace
) entfernt, dann wird die Befehlszeile anhand des „-“ in die Variable parameters
als Array aufgeteilt. Im ersten Element von parameters
steht der Aufruf des Programms, deshalb beginnt die Schleife mit dem zweiten Element.
Für die Befehlszeile X:\command.hta -param1 -param2
wird die HTA folgende Ausgabe liefern:
- Befehlszeile:
X:\command.hta -param1 -param2
- Parameter:
param1
undparam2
- Beispiel zur Auswertung der Befehlszeile (
commandline.zip
) Beispiel zur Auswertung der Befehlszeile, die an eine HTA übergeben wurde.
Fehlerbehandlung
Ab dem Internet Explorer 5.0 besteht die Möglichkeit, Fehler in J(ava)Script zu behandeln. Mit der try…catch
-Anweisung wird einem Block von Anweisungen eine Fehlerbehandlungsroutine hinzugefügt. Über sogenannte Ausnahmen können eigene Fehlermeldungen ausgegeben bzw. die Fehler behandelt oder unterdrückt werden. Die Fehlerbehandlung kann zentral in einer Funktion erfolgen.
Fehler auffangen und ausgeben
Folgenden Code in einem JScript ablegen:
In der Funktion centralErrHandler
werden die Fehler, die beim Ausführen der Funktionen errorOne
und errorTwo
auftreten, ausgewertet. Nach dem ein Fehler in einem try
-Block aufgetreten ist, wird der try
-Block verlassen und der catch
-Block ausgeführt. e
bezeichnet eine Variable vom Typ Error
und beschreibt den Fehler; e.description
enthält die Fehlermeldung.
Fehler weiterleiten
Mit document.formular.test
wird ein Fehler erzeugt, da kein Objekt formular
existiert. Der try
-Block wird demnach verlassen und die Anweisung in catch
ausgeführt. Um die Fehler zentral auszuwerten, kann man den Fehler werfen, d. h., der Fehler wird an die übergeordnete Funktion (Aufrufer) weitergeleitet.
Eigenen Fehler definieren
Mit new Error(…)
kann eine eigene Ausnahme erstellt werden. Als Parameter können eine Fehlernummer und ein Fehlertext angegeben werden. Der Fehlertext steht wiederum in der Eigenschaft description
. Nachdem der eigene Fehler wieder an die Funktion centralErrHandler
weitergeleitet wird, wird dort der Fehlertext Falsche Eingabe in einem Meldungsfeld ausgegeben.
- Werfen und Einfangen von Ausnahmen (
exceptions.zip
) Dieses Beispiel zeigt das Werfen und Einfangen von Ausnahmen.
Suche in Datei
Nach Auswahl einer Datei mit Durchsuchen… kann deren Inhalt im Textfeld angezeigt werden. Durch Eingabe eines Suchbegriffs und Betätigen der Schaltfläche Suche starten wird das erste Vorkommen des Suchbegriffs in der Datei in einem Meldungsfeld ausgegeben.
Anzeigen der Datei
Als Grundvoraussetzung für den Zugriff auf das lokale Dateisystem wird das ActiveX-Objekt FSO (Scripting.FileSystemObject
) benötigt. Die Funktion showFile
regelt die Anzeige des Inhalts einer Datei im Textfeld.
Mit OpenTextFile
wird die ausgewählte Datei zum Lesen geöffnet.
Parameter:
- Dateiname (hier: Wert des Textfeldes bei Durchsuchen…)
- Öffnungsmodus (1 = Lesen, 2 = Schreiben)
ReadAll
liest den gesamten Inhalt der Datei, mit der Zuweisung wird das Textfeld mit dem Inhalt der Datei gefüllt.
Suche in der Datei
Die Datei wird geöffnet und ihr Inhalt mit ReadAll
ausgelesen. Der Inhalt wird in diesem Beispiel in der Variablen fileContent
gespeichert. Das erste Vorkommen in der Datei läßt sich dann einfach mit indexOf
ermitteln und mittels alert
in einem Meldungsfeld ausgeben.
- Laden und Durchsuchen einer Textdatei (
searchinfile.zip
) Durchsuchen einer Datei nach einem vorgegebenen Text.