Подтвердить что ты не робот

В чем разница между CreateObject и Wscript.CreateObject?

Кто-нибудь знает аргументы за использование опции:

Wscript.CreateObject("some.object")

и

CreateObject("some.object")

внутри VBScript? когда я нахожу документацию или примеры, которые используют Wscript.CreateObject, я обычно переписываю с помощью CreateObject, потому что он всегда работает, а затем я могу легко повторно использовать код в HTA или ASP. Но я всегда задавался вопросом, почему эта функция существует и какая разница, если вы используете так или иначе в VBScript.

4b9b3361

Ответ 1

Нет никакой разницы между ними, когда вы вызываете их только одним аргументом. Делают то же самое.

Разница между ними заключается только в том, что вы вызываете с двумя параметрами. Утверждения

Wscript.CreateObject("some.object", "AnotherParam")

и

CreateObject("some.object", "AnotherParam")

делают совершенно разные вещи:

Функция VBScript CreateObject интерпретирует второй параметр как имя удаленного компьютера и пытается создать именованный COM-объект на этом удаленном компьютере; в этом примере он пытается создать экземпляр объекта с ProgId из "some.object" на удаленном компьютере с именем "AnotherParam". Метод WScript CreateObject интерпретирует второй параметр как префикс подпрограммы, который будет использоваться при обработке событий из объекта. Две функции GetObject аналогично связаны.

(Адаптировано из TechNet, раздел "Сравнение функций VOBcript CreateObject и GetObject с WSH".)

Ответ 2

Я предполагаю, что объект WScript имеет метод CreateObject, поэтому любой язык Windows Script может создавать COM-объекты.

VBScript обладает такой способностью, как глобальная функция, но другие языки Windows Script могут отсутствовать.

Например, JScript не имеет глобальной функции CreateObject (я полагаю) (он имеет, однако, синтаксис var a = new ActiveXObject("..."), поэтому вам не нужно использовать WScript.CreateObject в JScript).

Я бы предположил, что между этими двумя функциями нет разницы.

EDIT: существует разница (но только если вы пытаетесь создать объекты DCOM на удаленных хостах), см. ответ @Thomas Petersen.

Ответ 3

JScript не имеет глобального объекта CreateObject? WScript не может использовать JScript?

Код от devGuru

// JScript
var objIE = WScript.CreateObject("InternetExplorer.Application","objIE_")
objIE.Visible = true

while (objIE.Visible){
    WScript.Sleep(500);
}

function objIE_NavigateComplete2(pDisp, URL){
    WScript.Echo("You just navigated to", URL)
} 

function objIE_OnQuit(){
    boolBrowserRunning = false ;
}