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

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

来自以下知识库文章:

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

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

此外,以下是有关该主题的其他链接:

输入,输出,输入输出,下定决心已经@MSDN 博客
VBScript “类型不匹配”问题与“[输入,输出] BSTR *”参数 SO 问题

于 2011-04-13T09:56:25.530 回答