Como iniciar um aplicativo do HTA?
perguntar:
Olá, especialista em roteiro! Para o HTA, há algo que possa substituir o comando wscript.shell? Preciso executar algum aplicativo e especificar o arquivo para abrir.
- dl
responder:
Olá DL. Sim, sabemos que esses comandos podem ser usados no HTA e podem ser usados em vez do comando wscript.shell, e o apresentaremos a ele em um tempo. Antes de apresentá -lo, no entanto, devemos observar que você pode realmente usar o objeto wscript.shell no HTA. Isso é uma confusão comum: como você não pode usar certos comandos no HTA (como WScript.echo e wscript.sleep), as pessoas pensam que você não pode usar nenhum comandos WSH no HTA.
Antes de continuar, há outra pergunta: por que você não pode usar o wscript.echo e o wscript.sleep no HTA? Ou seja, esses métodos são propriedades dos objetos WScript e você não pode criar instâncias de objetos WScript. Os objetos WScript são criados automaticamente e são criados apenas quando você executa o host de script do Windows (ou seja, wscript.exe ou cscript.exe). É precisamente por causa disso que os seguintes scripts são absolutamente válidos:
O código é o seguinte:
Wscript.echo "Hey".
Observe que não criamos um objeto WScript, que foi criado automaticamente quando chamamos o Host Script do Windows.
Mas isso é limitado a objetos WScript. Existem outros objetos WSH que você pode criar, incluindo objetos de shell. Por exemplo, aqui está um pequeno HTA simples que cria um objeto wscript.shell e depois executa o bloco de notas.exe (e abre o arquivo c: /scripts/test.txt no processo):
O código é o seguinte:
<html>
<head>
<Script Language = "VBScript">
Sub Runprogram
Set objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Final sub
</script>
</head>
<Body>
<button onclick = "runprogram"> executar programa </botão> <p>
</body>
</html>
Como você pode ver, este é quase o HTA mais fácil que você pode obter: consiste em apenas um botão e uma sub -rotina chamada RunProgram é executada quando clicada. Por favor, dê uma olhada no código RunProgram:
O código é o seguinte:
Sub Runprogram
Set objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Final sub
É isso: criamos uma instância do objeto wscript.shell e chamamos o método de execução. Isso passa um único parâmetro para execução: o nome do arquivo executável (notepad.exe) seguido pelo caminho do arquivo que você deseja abrir. É tudo o que precisamos fazer.
A propósito, desde que o script seja executado no HTA, não haverá problemas. Se você tentar executá -lo em um arquivo HTML (ou seja, um arquivo com a extensão do arquivo .htm), uma caixa de mensagem aparece avisando que um controle ActiveX está tentando executar na página. Você deve clicar em Sim para permitir que a sub -rotina crie um objeto Shell e depois executá -lo. Isso ocorre porque os objetos WSH são considerados "insegurança para scripts".
Nota: Sim, isso parece um pouco estranho, e eu realmente acho que os objetos de script não são seguros para scripts. Mas isso ocorre porque o Internet Explorer usa diferentes modelos de scripts e diferentes modelos de segurança do WSH. Felizmente, o HTA usa um modelo de segurança diferente do Internet Explorer, o que significa que você não encontra esse problema ao criar objetos de shell no HTA.