web-dev-qa-db-ja.com

CreateObjectとWscript.CreateObjectの違いは何ですか?

誰かが使用するオプションを持つことの背後にある理由を知っていますか?

Wscript.CreateObject("some.object")

そして

CreateObject("some.object")

vBScript内? Wscript.CreateObjectを使用するドキュメントや例を見つけた場合、通常はCreateObjectを使用して書き直します。これは常に機能しているように見えるため、HTAまたはASP内でコードを簡単に再利用できます。しかし、私はいつもこの機能が存在する理由と、VBScript内で何らかの方法を使用した場合にどのような違いが生じるのか疑問に思っていました。

15
mrTomahawk

1つの引数だけで呼び出す場合、2つの間に違いはありません。まったく同じことをします。

2つのパラメーターの違いは、2つのパラメーターを使用して呼び出す場合にのみ証明されます。ステートメント

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

そして

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

まったく異なることをする:

VBScript CreateObject関数は、2番目のパラメーターをリモートコンピューター名として解釈し、そのリモートコンピューター上に名前付きCOMオブジェクトを作成しようとします。この例では、「AnotherParam」という名前のリモートコンピューター上で「some.object」のProgIdを持つオブジェクトのインスタンスをインスタンス化しようとします。 WScript CreateObjectメソッドは、2番目のパラメーターを、オブジェクトからのイベントの処理に使用されるサブルーチンプレフィックスとして解釈します。 2つのGetObject関数は同様に関連しています。

TechNet 、セクション「VBScriptCreateObjectおよびGetObject関数とWSHの比較」から引用。)

27
Thomas Petersen

WScriptオブジェクトにはCreateObjectメソッドがあるので、どのWindowsスクリプト言語でもCOMオブジェクトを作成できると思います。

VBScriptにはグローバル関数としての機能がありますが、他のWindows ScriptHost言語にはない場合があります。

たとえば、JScriptにはグローバルCreateObject関数がありません(私は信じています)(ただし、var a = new ActiveXObject("...")構文があるため、でWScript.CreateObjectを使用する必要はありません。 JScriptのいずれか)。

2つの機能に違いはないと思います。

[〜#〜] edit [〜#〜]:違いがあります違いがあります(ただし、リモートホスト上のDCOMオブジェクトをインスタンス化します)、@ ThomasPetersenによる回答を参照してください。

6
codeape

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 ;
}
4
index