我可以使用签名
来调用COM方法 HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)
来自VBScript?
以下内容:
Dim a;
Dim b;
component.Foo "something", a, b
给出了关于不兼容类型的错误。
我仍然可以更改方法的签名。
答案 0 :(得分:4)
看起来不支持输出参数;虽然ByRef
/ [in, out]
参数是VARIANT
个参数。
来自以下知识库文章:
“ 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