Как начать приложение с HTA?
просить:
Привет, эксперт по сценарию! Для HTA есть что -нибудь, что может заменить команду wscript.shell? Мне нужно запустить некоторое приложение и указать файл для открытия.
- дл
отвечать:
Привет, дл. Да, мы знаем, что такие команды могут использоваться в HTA и могут использоваться вместо команды Wscript.shell, и мы познакомим вас с ней через некоторое время. Однако, прежде чем ввести его, мы должны отметить, что вы можете использовать объект wscript.shell в HTA. Это распространенная путаница: поскольку вы не можете использовать определенные команды в HTA (например, wscript.echo и wscript.sleep), люди думают, что вы не можете использовать какие -либо команды WSH в HTA.
Прежде чем продолжить, есть еще один вопрос: почему вы не можете использовать wscript.echo и wscript.sele в HTA? То есть эти методы являются свойствами объектов WSCRICT, и вы не можете создавать экземпляры объектов WSCRICT. Объекты WSCRICT создаются автоматически и создаются только при запуске хоста скрипта Windows (то есть wscript.exe или cscript.exe). Именно из -за этого следующие сценарии абсолютно действительны:
Код заключается в следующем:
Wscript.echo "Привет".
Обратите внимание, что мы не создали объект wscript, который был автоматически создан, когда мы вызовут хост скрипта Windows.
Но это ограничено объектами WSCRICT. Есть и другие объекты WSH, которые вы можете создать, включая объекты оболочки. Например, вот простой маленький HTA, который создает объект wscript.shell, а затем запускает notepad.exe (и открывает файл c: /scripts/test.txt в процессе):
Код заключается в следующем:
<html>
<голова>
<script language = "vbscript">
Sub RunProgram
Установить objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Конец суб
</script>
</head>
<тело>
<button onclick = "RunProgram"> Run Run Program </button> <p>
</body>
</html>
Как вы можете видеть, это почти самая простой HTA, которую вы можете получить: она состоит только из одной кнопки, и при нажатии запускается подпрограмма, называемая RunProgram. Пожалуйста, посмотрите на код RunProgram:
Код заключается в следующем:
Sub RunProgram
Установить objshell = createObject ("wscript.shell")
objshell.run "notepad.exe c: /scripts/test.txt"
Конец суб
Вот и все: мы создаем экземпляр объекта wscript.shell и вызываем метод запуска. Это передает один параметр для выполнения: имя исполняемого файла (notepad.exe), за которым следует путь файла, который вы хотите открыть. Это все, что нам нужно сделать.
Кстати, до тех пор, пока сценарий запускается в HTA, проблем не будет. Если вы попытаетесь запустить его в файле HTML (то есть файл с расширением файла .htm), в окне сообщения появляется флажок, предупреждающий, что управление ActiveX пытается запустить на странице. Вы должны нажать «да», чтобы позволить подпрограмме создавать объект оболочки, а затем запустить его. Это связано с тем, что объекты WSH считаются «незащищенными для сценариев».
Примечание: да, это звучит немного странно, и я действительно думаю, что сценаристы небезопасны для сценариев. Но это связано с тем, что Internet Explorer использует различные модели сценария и отличные модели безопасности, чем WSH. К счастью, HTA использует другую модель безопасности, чем Internet Explorer, что означает, что вы не сталкиваетесь с этой проблемой при создании объектов Shell в HTA.