Wie starte ich eine Anwendung von HTA?
fragen:
Hallo Drehbuchsexte! Gibt es für HTA etwas, das den Befehl wscript.shell ersetzen kann? Ich muss eine Anwendung ausführen und die zum Öffnen der Datei angeben.
- dl
Antwort:
Hallo dl. Ja, wir wissen, dass solche Befehle in HTA verwendet werden können und anstelle des Befehls wscript.shell verwendet werden können, und wir werden Ihnen in einer Weile damit vorstellen. Bevor wir es einführen, sollten wir jedoch beachten, dass Sie das WScript.shell -Objekt in HTA tatsächlich verwenden können. Dies ist eine häufige Verwirrung: Da Sie bestimmte Befehle in der HTA (wie wscript.Echo und wscript.sleep) nicht verwenden können, glauben die Leute, dass Sie in der HTA keine WSH -Befehle verwenden können.
Bevor Sie fortfahren, gibt es eine andere Frage: Warum können Sie wscript.Echo und wscript.sleep in HTA nicht verwenden? Das heißt, diese Methoden sind Eigenschaften von WScript -Objekten, und Sie können keine Instanzen von WScript -Objekten erstellen. WScript -Objekte werden automatisch erstellt und nur dann erstellt, wenn Sie Windows -Skript -Host ausführen (d. H. Wscript.exe oder cscript.exe). Genau deshalb sind die folgenden Skripte absolut gültig:
Der Code ist wie folgt:
Wscript.Echo "Hey."
Beachten Sie, dass wir kein WScript -Objekt erstellt haben, das automatisch erstellt wurde, wenn wir Windows -Skript -Host aufrufen.
Dies beschränkt sich jedoch auf WScript -Objekte. Es gibt andere WSH -Objekte, die Sie erstellen können, einschließlich Shell -Objekte. Zum Beispiel ist hier ein einfaches kleines HTA, das ein wscript.shell -Objekt erstellt und dann notepad.exe ausführt (und die Datei c: /scripts/test.txt im Prozess öffnet):
Der Code ist wie folgt:
<html>
<kopf>
<script Language = "vbscript">
Sub RunProgramm
Setzen Sie objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Ende sub
</script>
</head>
<body>
<button onclick = "runProgram"> Programm ausführen </button> <p>
</body>
</html>
Wie Sie sehen können, ist dies fast das einfachste HTA, das Sie erhalten können: Es besteht nur aus einer Taste und einer Unterroutine namens RunProgram wird ausgeführt, wenn Sie klicken. Bitte werfen Sie einen Blick auf den RunProgram -Code:
Der Code ist wie folgt:
Sub RunProgramm
Setzen Sie objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Ende sub
Das ist es: Wir erstellen eine Instanz des wscript.shell -Objekts und rufen die Run -Methode auf. Dadurch wird ein einzelner Parameter für den Lauf geleitet: Der ausführbare Dateiname (Notepad.exe) gefolgt vom Pfad der Datei, die Sie öffnen möchten. Das ist alles, was wir tun müssen.
Übrigens, solange das Skript in der HTA ausgeführt wird, wird es keine Probleme geben. Wenn Sie versuchen, es in einer HTML -Datei auszuführen (dh einer Datei mit der Dateierweiterung .htm), wird ein Nachrichtenfeld gewarnt, dass ein ActiveX -Steuerelement versucht, auf der Seite auszuführen. Sie müssen auf Ja klicken, um das Unterroutine ein Shell -Objekt zu erstellen und es dann auszuführen. Dies liegt daran, dass WSH -Objekte als "Unsicherheit für das Skript" angesehen werden.
Hinweis: Ja, das klingt ein bisschen seltsam und ich denke tatsächlich, dass Skriptobjekte nicht sicher für das Skripten sind. Dies liegt jedoch daran, dass Internet Explorer verschiedene Skript -Hosting und verschiedene Sicherheitsmodelle als WSH verwendet. Glücklicherweise verwendet HTA ein anderes Sicherheitsmodell als Internet Explorer, was bedeutet, dass Sie dieses Problem nicht beim Erstellen von Shell -Objekten innerhalb des HTA begegnen.