Почему я должен писать WScript.Echo с WScript, хотя это не обязательно для CreateObject? - PullRequest
1 голос
/ 19 июня 2019

В VBScript есть очень много примеров, когда пользователи писали WScript.CreateObject("..."), в то время как script56.chm и другие соответствующие документы советуют просто писать CreateObject("...").И, похоже, работает так же.

Мне интересно, почему он отличается от WScript.Echo (вы не можете просто написать Echo ...)

Я прочитал следующий вопрос и комментарии о причине WScript.CreateObject, но, похоже, не нашел ничего уместного: В чем разница между CreateObject и Wscript.CreateObject?

Или я что-то пропустил?

1 Ответ

2 голосов
/ 19 июня 2019

Вы видите несоответствие, потому что думаете, что используете одно и то же в обоих случаях, но это не так.

У вас есть два разных элемента, которые работают вместе для запуска ваших скриптов: хост скриптов и механизм скриптов.Хост сценария - это исполняемый файл, который инициализирует механизм сценариев, который работает с используемым языком.При обычной установке клиентской ОС у вас есть как минимум три хоста скриптов (wscript.exe, cscript.exe, mshta.exe), которые могут использовать два разных скриптовых движка (VBScript и JScript).

WScript.CreateObject - это метод объекта WScript, предоставляемый хостом сценария (cscript.exe или wscript.exe), чтобы позволить механизму сценариев (как сказано, VBScript и JScript являются родными дляОС, но вы можете установить другие механизмы) создание экземпляра COM-объекта.

CreateObject (здесь не WScript) - это функция механизма сценариев VBScript, не связанная с объектом WScript или узлом сценария.

Оба имеют одно и то же имя, но это не одно и то же.Вызов функции CreateObject в VBScript равен «эквиваленту» для использования new ActiveXObject( ... ) в JScript.В обоих случаях вы используете то, что предоставляет механизм сценариев, а не то, что предоставляет узел сценариев.

Например, вы можете без проблем использовать любой из двух (CreateObject или new ActiveXObject( ... )) внутри файла .hta, поскольку они являются частью механизма сценариев, но вы не можете использовать WScript.CreateObjectв файле .hta, поскольку хост сценария (mshta.exe) не предоставляет объект WScript для механизма сценариев, выполняющего код.

...