Comment démarrer une demande de HTA?
demander:
Bonjour, expert en script! Pour HTA, y a-t-il quelque chose qui peut remplacer la commande wscript.shell? J'ai besoin d'exécuter une application et de spécifier le fichier à ouvrir.
- DL
répondre:
Bonjour DL. Oui, nous savons que ces commandes peuvent être utilisées dans HTA et peuvent être utilisées à la place de la commande wscript.shell, et nous vous présenterons à un moment. Avant de l'introduire, cependant, nous devons noter que vous pouvez réellement utiliser l'objet wscript.shell dans HTA. Il s'agit d'une confusion courante: parce que vous ne pouvez pas utiliser certaines commandes dans le HTA (comme wscript.echo et wscript.sleep), les gens pensent que vous ne pouvez pas utiliser de commandes WSH dans le HTA.
Avant de continuer, il y a une autre question: pourquoi ne pouvez-vous pas utiliser wscript.echo et wscript.sleed in hta? Autrement dit, ces méthodes sont des propriétés des objets WScript, et vous ne pouvez pas créer des instances d'objets WScript. Les objets WScript sont créés automatiquement et ne sont créés que lorsque vous exécutez Windows Script Host (c'est-à-dire wscript.exe ou cscript.exe). C'est précisément à cause de cela que les scripts suivants sont absolument valides:
Le code est le suivant:
Wscript.echo "Hey."
Notez que nous n'avons pas créé d'objet WScript, qui a été automatiquement créé lorsque nous appelons l'hôte de script Windows.
Mais cela est limité aux objets WScript. Il existe d'autres objets WSH que vous pouvez créer, y compris les objets shell. Par exemple, voici un petit HTA simple qui crée un objet wscript.shell, puis exécute notepad.exe (et ouvre le fichier c: /scripts/test.txt dans le processus):
Le code est le suivant:
<html>
<adal>
<script linguisse = "vbscript">
Sous-programme
Set objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Sub-Sub
</cript>
</ head>
<body>
<bouton onclick = "runProgram"> Exécuter le programme </fontificateur> <p>
</docy>
</html>
Comme vous pouvez le voir, c'est presque le HTA le plus facile que vous puissiez obtenir: il se compose d'un seul bouton et un sous-programme appelé RunProgram est exécuté lors du clic. Veuillez jeter un œil au code RunProgram:
Le code est le suivant:
Sous-programme
Set objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Sub-Sub
Voilà: nous créons une instance de l'objet wscript.shell et appelons la méthode d'exécution. Cela transmet un seul paramètre pour l'exécution: le nom de fichier exécutable (notepad.exe) suivi par le chemin du fichier que vous souhaitez ouvrir. C'est tout ce que nous devons faire.
Soit dit en passant, tant que le script est exécuté dans le HTA, il n'y aura aucun problème. Si vous essayez de l'exécuter dans un fichier html (c'est-à-dire un fichier avec l'extension de fichier .htm), une zone de message vous semble averti qu'un contrôle ActiveX essaie d'exécuter sur la page. Vous devez cliquer sur oui pour permettre au sous-programme de créer un objet shell, puis l'exécuter. En effet, les objets WSH sont considérés comme "insécurité pour les scripts".
Remarque: Oui, cela semble un peu bizarre, et je pense en fait que les objets de script ne sont pas sûrs pour les scripts. Mais c'est parce qu'Internet Explorer utilise un hébergement de scripts différent et différents modèles de sécurité que WSH. Heureusement, HTA utilise un modèle de sécurité différent de celui d'Internet Explorer, ce qui signifie que vous ne rencontrez pas ce problème lors de la création d'objets de shell au sein de la HTA.