16

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

Wscript.CreateObject("some.object")

CreateObject("some.object")

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

4

3 に答える 3

28

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の比較」から採用。)

于 2009-04-24T20:17:56.390 に答える
6

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

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

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

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

編集:違いがあります(ただし、リモートホストでDCOMオブジェクトをインスタンス化しようとしている場合のみ)。@ThomasPetersenによる回答を参照してください。

于 2009-04-24T20:11:39.883 に答える
4

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 ;
}
于 2011-03-09T00:13:46.940 に答える