Startseite

© Juni 2015 • by dieseyer • all rights reserved • www.dieseyer.de

Du bist hier: dieseyer.de > . . . mehr > HTA
HTA
HTAs sind HTML-Applikationen
(HTA = HTML-Application), die auf einem Computer lokal, im Kontext das angemeldeten Benutzers, ausgeführt werden - genau so, wie jede andere Anwendung auch. Dies bedeutet: HTAs können Computer-Viren oder -Würmer sein bzw. welche enthalten. Damit sind sie so gefährlich oder ungefährlich und nützlich wie jede andere Anwendung (VBS, VB, VBA, EXE, COM).

Da HTAs HTML-Applikationen sind, enthalten sie HTML-Code - man muss sich also etwas mit HTML beschäftigen. Für diesen Einstieg bietet es sich an, die Anleitung von SELFhtml.org vom download für das Offline-Lesen herunter zu laden.

Seit Dezember 2004 bietet MS ein HTA Helpomatic, das Beispiel-Code anzeigt. Dadurch genügen einige HTML-Grundkentnisse zum Aufbau einer HTML-Seite, um recht Anspruchsvolle Applikationen erstellen zu können.
Da der Download eine Überprüfung der installierten Windows-Lizenz voraussetzt, traue ich mir nicht, dieses Tool hier an zu bieten. Weitere Infos zu HTA:APPLICATION auf der MS-Site und im HTA Developers Center - auch auf der MS-Site.

Beim Starten von HTAs
(z.B. durch einen Doppelklick auf eine solche Datei) erkennt Windows an Hand der Dateiendung (.hta), dass diese Datei mit (dem Interpreter) mshta.exe (befindet sich im ..\system32\-Verzeichnis) gestartet werden soll. Findet Windows diese mshta.exe nicht, öffnet sich der typische 'Öffnen mit'-Dialog.
Aktuelle Windows-Versionen verhindern es (normalerweise), Anwendungen direkt aus dem Internet heraus auszuführen: es erfolgt immer eine Abfrage, ob die Anwendung herunter geladen oder geöffnet werden soll. Dies ist der typische Dialog des Internet Explorers, um etwas aus dem Internet herunter zu laden. Da HTAs Anwendungen sind, öffnet sich dieser Dialog ebenfalls, wenn man sie im Internet anklickt - anders als bei 'normalen' HTML-Dateien, die ohne Nachfrage (im IE) angezeigt werden.

Was ist zu beachten?

1. VBscript, JScript oder was?
VBscript und JScript funktionieren auf jeden Fall in HTA und "... HTAs run embedded Microsoft ActiveX controls and Java applets ...". Ich glaube nicht, dass JavaScript läuft (habe ich nicht getestet - wenn jemand etwas anderes weiss, möge er es mir mitteilen!).

2. WScript.Sleep geht nicht!
Auch die folgende Zeile geht nicht:
Dim WshNet : Set WshNet = WScript.CreateObject("WScript.Network")
Aber zum Glück gehts dann so:
Dim WshNet : Set WshNet =         CreateObject("WScript.Network")

3. Do..Loop-Schleifen / HTAs beenden
So lange ein Skript in einer HTA läuft, kann man diese (z.B. mit [Alt-F4]) nicht beenden - die Anzeige verschwindet zwar, aber das Skript läuft weiter. Dies ist der Grund, warum man keine (unendlichen) Do..Loop-Schleifen verwenden sollte. Statt dessen sind, nach einer kurzen Pause, wiederholte Aufrufe von Prozeduren sinnvoll, wie QuellCode> 120minReboot.hta  demonstriert.

4. Fehler im Skript-Code
Fehler im VBS-Code werden nicht immer mit einer Fehlermeldung angezeigt - die Abarbeitung wird einfach beendet. Bei WinPE (z.B. durch Bart's PE Builder) werden überhaupt keine Fehler angezeigt. Daher habe ich bei umfangreichen Skripten in HTAs eine Statusanzeige eingebaut
  document.all.Stand.innerHTML = "0102 :: "
  WSHShell.Run "wait.vbs", , true

die im HTML-Bereich dann angezeigt wird:
  <center id=Stand> </center>
Das QuellCode> wait.vbs ist erforderlich, damit die Ausgabe auch erscheint. In einer HTA beansprucht die Skript-Abarbeitung nämlich die gesamte Aufmerksamkeit bzw. CPU-Leistung, so dass die Anzeige vernachlässigt und damit nicht angezeigt wird.

 
Beispiele

QuellCode> 120minReboot.hta zeigt, wie man ohne WScript.Sleep auskommen kann.

QuellCode> input.hta erfasst mehrere Eingabe in einem Formular.

QuellCode> dateiauswahl-txtzeigen.hta aus Use a File Open Dialog Box to Populate a List Box (Windows XP-only) von der MS-Site zeigt, wie man einen "Datei öffnen" -Dialog erstellen kann. Die ausgewählte Datei wird als Textdate geöffnet und in einem Fenster angezeigt.

QuellCode> loginhta.hta - ermöglicht die Eingabe eines Anmeldenamens und eines Passworts, wobei die Eingabe des Passworts versteckt (Sternchen) erfolgt. Im Start-Button ist der Name des zu startenden Skripts enthalten. In diesem Beispiel erstellt die HTA auch gleich noch das passende (Anmelde- bzw.) Auswerte-Skript.

QuellCode> login2server.hta ermöglicht die Zuordnung von Netzlaufwerken zu Freigabenamen von Servern, die sich in einer anderen Domän befinden. In einem Active-Directory-Netzwerk wurde durch Policys die Speicherung des Passworts für die Anmeldung an NT4-Server nach einem PC-Neustart deaktiviert ("net use . . /Persistent funktioniert dann nicht"). Mit login2server.hta im Autostart können recht komfortabel mehrere Zuordnungen durch Eingabe des Passworts automatisiert werden.

QuellCode> tastaturcode.hta wird 30s angezeigt und zeigt während dieser Zeit den Tastaturcode der Tasten an, die gedrückt wurden.


↑ Zum Seitenanfang ↑