Webdesign

HTML Application: HTA

8. September 2003
von

von Jan Winkler

Eines der vielen Akronyme, die in den letzten Jahren von Microsoft eingeführt wurden, lautet HTA und steht für HTML Application. HTA bildet die Grundlage für eigene Programme, die ganz einfach mit etwas HTML, CSS und JavaScript zu erstellen sind.

Der Nutzen
Der Nutzen von HTA ist schnell erklärt: Es ermöglicht (relativ) komplexe Programme zu schreiben, und das auf der Basis sehr einfacher Sprachen wie HTML, CSS, JavaScript oder VBScript (im Vergleich zu C/C++ oder Java). Der Vorteil ist, dass diese Sprachen von vielen beherrscht werden und das Programm im Endeffekt einfach zu modifizieren sein wird, weil es nicht compiliert werden muss. Technisch gesehen, ist HTA genauso stark wie eben die verwendeten Sprachen – einziger Unterschied sind die besonderen Zugriffsrechte.

Das Prinzip
Das Prinzip von HTA ist simpel: HTML-Dateien werden so modifiziert, dass sie vom Browser als eigenständiges Programm angesehen und mit besonderen Zugriffsrechten ausgeführt werden. Zu den besonderen Rechten eines HTA-Programms gehört beispielsweise der Zugriff auf das Dateisystem oder andere ActiveX-Objekte, ohne dass der Benutzer um Erlaubnis gefragt werden muss. Das Grundstück bildet dabei das so genannte HTA:APPLICATION-Element. Voraussetzung für die Benutzung ist ein Microsoft Internet Explorer ab Version 5.0 sowie ein Windows 32-Bit System. Ausserdem ist die Standard-Dateiendung nicht .htm oder .html, sondern muss in .hta umbenannt werden. Dies gilt allerdings nur für die auszuführende Datei (sozusagen die Startseite) – sollten Sie z.B. mit Frames arbeiten, können Sie diese Dateien ruhig mit den ‘normalen’ Dateiendungen speichern.

Die Sicherheit
Viele werden jetzt denken, dass HTA-Anwendungen auf Grund geringerer Sicherheitsbestimmungen ohne weiteres gefährlich werden können (z.B. durch Viren), allerdings unterliegen diese Anwendungen einer anderen wichtigen Bestimmung: Da sie als Programm angesehen werden, können sie nicht direkt im Browser gestartet werden, sondern müssen erst herunter geladen und separat aufgerufen werden (wie jedes normale Programm eben auch).

Das Element HTA:APPLICATION

Wie schon erwähnt, bildet das HTA:APPLICATION-Element eine wichtige Rolle in einer HTA-Anwendung. Anhand dieses Elements, besser gesagt der Eigenschaften/Attribute, wird die Ausführung des Programms beeinflusst. Das Element wird direkt in den HEADER der Start-Datei (.hta) notiert und kann folgende Attribute besitzen:

applicationname Frei gewählter Name der Anwendung (wird im Task-Manager verwendet).
border Die Rahmenbreite: dialog (Rahmen wie eine Dialogbox), none (kein Rahmen), thick (dicker Rahmen), thin (dünner Rahmen)
borderstyle Der Rahmenstil: complex (erhöht und vertieft), normal (normaler Stil), raised (erhöht), static (statisch), sunken (vertieft)
caption Anzeigen der Titelleiste: yes, no
commandLine Zeichenkette, mit der die Anwendung aufgerufen wurde (nur im Script abrufbar). Readonly.
contextmenu Anzeigen des Kontextmenüs bei Mausklick: yes, no
icon Pfad zu einem Icon, das angezeigt werden soll.
innerborder Anzeigen des inneren Rahmens: yes, no
maximizebutton Anzeige der Maximier-Button: yes, no
minimizebutton Anzeige der Minimier-Button: yes, no
navigable Links im eigenen oder neuen Fenster öffnen: yes (eigenes Fenster), no (neues Fenster bei jedem Link)
scroll Anzeige der Scrollbars: yes, no
scrollflat 3D-Scrollbars oder flache Scrollbars: yes (flach), no (3D)
selection Inhalt markierbar: yes, no
showintaskbar Anzeige in der Task-Leiste: yes, no
singleinstance Programm nur einmal ausführbar, oder mehrmals parallel: yes (einmal), no (mehrmals)
sysmenu Anzeige der System-Button (Minimieren, Maximieren, Schließen): yes, no
version Versionsnummer des Programms (frei wählbar).
windowstate Startgröße des Fensters: maximize (maximiert), minimize (minimiert), normal (normale Größe)

Frames
Bei Frames kommt noch eine weitere Einstellungsmöglichkeit hinzu. Das FRAME-Element wird in HTA-Anwendungen durch das application-Attribut erweitert. Es beschreibt, ob ein Frame zur Anwendung gehört (yes) oder nicht (no). Frames, die nicht zur Anwendung gehören, unterliegen den Sicherheitsbestimmungen, wie sie auch im Browser gelten. Frames der Anwendung erhalten die gelockerten Sicherheitsbestimmungen der HTA-Anwendung. Dabei ist wichtig, dass möglichst alle Frames mit diesem Attribut gekennzeichnet werden (auch Frames die sich innerhalb eines Frames befinden), da sonst als Standard no (nicht Anwendung) gilt. Enthält ein mit no gekennzeichneter Frame weitere Frames, so gilt diese Eigenschaft auch für alle enthaltenen Frames; egal wie sie gekennzeichnet sind. Dies gilt nicht für mit yes gekennzeichnete Frames. Gleiches gilt bei IFRAMEs.

Beispiel: test.hta

 <html><head>
<hta:application id="hta" applicationname="Testanwendung"
border="thin" borderstyle="static"
caption="yes" contextmenu="yes"
icon="test.ico" innerborder="no"
maximizebutton="no" minimizebutton="no"
navigable="yes" scroll="auto"
scrollflat="yes" selection="yes"
showintaskbar="no" singleinstance="yes"
sysmenu="yes" version="1.0"
windowState="normal" >
<title>Testanwendung</title>
<script>
<!--
function Start()
{
a = document.all.hta.commandLine.search(' -start:');
b = document.all.hta.commandLine.length;
c = document.all.hta.commandLine.substr(a,b);
if(a != -1)
{parent.frame2.location.href = c;}
}
//-->
</script>
</head>
<frameset rows="100,*">
<frame application="yes" src="oben.html">
<frame application="no" src="about:blank" name="frame2">
</frameset>
</html>

oben.html

       
<html><body>
<form
onSubmit="parent.frame2.location.href=document.all.url.value;
return false;">
<table width="100%">
<tr>
<td>Wechseln zu:</td>
<td><input type="Text" id="url" value="http://www.">
<input size="60" type="Submit" value="Go!">
</td>
</tr>
</table>
</form></body></html>

3 Kommentare zu „HTML Application: HTA
  1. F. B. am 4. September 2009 um 11:20

    Trotz der vergangenen 6 Jahre seit Veröffentlichung, hat der Artikel mir gerade sehr weitergeholfen. Vielen Dank!

  2. lenninfo am 19. März 2010 um 18:05

    Mir hat der Artikel auch geholfen. Ich habe ein Javascript-Buch von Jan Winkler. Ein weiter Bekannter hat sich das Buch bei mir ausgeliehen, obwohl er überhaupt nichts von allgemeiner Programmierung weiß…

    ABER: Das mit “singleinstance” geht bei mir irgendwie nicht.

  3. Kai Papula am 26. April 2013 um 10:30

    Zuerst danke für den Artikel, erklärte mir kurz und bündig die Funktionalität einer HTA….
    Aber ich habe leider ein (hoffentlich) kleines Problem. Habe eine Applikation geschrieben mit Datenzugriff. Es werden die aktuellsten CSS-Standards benutzt, aus diesem Grund ist mindestens Internet Explorer 10 nötig….

    Aufgrund von Datenzugriff etc… habe ich kurz aus .html .hta gemacht und im Header HTA ergänzt (mit dem Ziel: Fullscreen).

    Im Header wurde der content auf content=”IE=10″ gesetzt. Wenn ich das so lasse öffnet sich die Applikation in einem kleinen Fenster und nicht im Fullscreen. (Er ignoriert die HTA-Tags)

    Wenn der content auf content=”IE=9″ gesetzt wird funktionieren die HTA-Tags, er öffnet die Applikation in Fullscreen, jedoch mit grafischen Mängel (wegen mangelnder Untertützung für CSS-Elemente mit IE9)

    Hat jemand eine Idee?

Ein Kommentar? Schön!

Wir freuen uns immer über Leser, die durch nützliche und konstruktive Beiträge zum Thema eine Diskussion anstoßen oder den Artikel mit weiteren Informationen anreichern. Alle Kommentare werden in diesem Sinne moderiert. Zum Kommentar-Fairplay gehört für uns auch der Einsatz von rel="nofollow". Bitte verwenden Sie zudem als Namen weder eine Domain noch ein spamverdächtiges Wort. Vielen Dank!