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

时间:2011-04-13 09:02:03

标签: com vbscript method-signature

我可以使用签名

来调用COM方法
 HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)

来自VBScript?

以下内容:

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

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


我仍然可以更改方法的签名。

1 个答案:

答案 0 :(得分:4)

看起来不支持输出参数;虽然ByRef / [in, out]参数是VARIANT个参数。

来自以下知识库文章:

INFO: Type mismatch errors when you pass parameters from an ASP component to Visual Basic Component @ support.microsoft.com

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

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

In, Out, In-Out, Make up your mind Already @ MSDN blogs
VBScript “Type Mismatch” issue with “[in, out] BSTR * ” parameter SO Question