从VBScript调用Foo(...,[out] BSTR*value)的COM方法

pet*_*hen 5 com vbscript method-signature

我可以使用签名来调用COM方法

 HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)
Run Code Online (Sandbox Code Playgroud)

来自VBScript?

下列:

 Dim a;
 Dim b;
 component.Foo "something", a, b
Run Code Online (Sandbox Code Playgroud)

给出了关于不兼容类型的错误.


我仍然可以改变方法的签名.

mek*_*ian 4

貌似不支持输出参数;while ByRef/[in, out]参数是,但仅限于VARIANT参数。

\n\n

来自以下知识库文章:

\n\n

信息:将参数从 ASP 组件传递到 Visual Basic 组件 @ support.microsoft.com 时出现类型不匹配错误

\n\n

" VBScript 仅支持 VARIANT ByRef 参数。您可以使用 VBScript 调用采用 ByRef 字符串的过程,但使用 Visual Basic 构建的组件的默认行为是在尝试将 ByRef 参数传递给这些组件时失败,并出现类型不匹配错误。OLE当要求将 ByRef 变体转换为任何其他 ByRef 类型时,自动化的默认类型强制函数会失败。

\n\n

此外,这里还有有关该主题的其他链接:

\n\n

输入、输出、输入输出,下定决心吧 @ MSDN 博客
\n VBScript \xe2\x80\x9cType Mismatch\xe2\x80\x9d 与 \xe2\x80\x9c[in, out] BSTR * \xe2\ 的问题x80\x9d 参数 SO 问题

\n