5

署名を使用してCOMメソッドを計算することは可能ですか

 HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)

VBScriptから?

以下:

 Dim a;
 Dim b;
 component.Foo "something", a, b

互換性のないタイプについてエラーが発生します。


それでもメソッドのシグネチャを変更できます。

4

1 に答える 1

4

出力パラメータはサポートされていないようです。ByRef/パラメータはあり[in, out]ますが、パラメータのみVARIANTです。

次のKB記事から:

情報:ASPコンポーネントからVisual Basic Component@support.microsoft.comにパラメーターを渡すときにタイプの不一致エラーが発生します

VBScriptはVARIANTByRefパラメータのみをサポートします。VBScriptを使用してByRef文字列を受け取るプロシージャを呼び出すことができますが、Visual Basicで構築されたコンポーネントのデフォルトの動作は、ByRefパラメータをこれらのコンポーネントに渡そうとするとタイプミスマッチエラーで失敗します。OLE ByRefバリアントを他のByRefタイプに変換するように要求されると、オートメーションのデフォルトのタイプ強制関数は失敗します。

また、このトピックに関する他のリンクは次のとおりです。

In、Out、In-Out、Make your mind Already @ MSDN blogs
VBScript“ Type Mismatch” issue with“ [in、out] BSTR *”パラメーターSO質問

于 2011-04-13T09:56:25.530 に答える