问题描述
我可以使用签名
HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)
来自VBScript?
from VBScript?
以下内容:
Dim a;
Dim b;
component.Foo "something", a, b
提供有关不兼容类型的错误。
gives an error about incompatible types.
我仍然可以更改方法的签名。
I still could change the signature of the method.
推荐答案
看起来不支持输出参数; ByRef
/ [in,out]
参数,但只在 VARIANT
参数。
Looks like output parameters are not supported; while ByRef
/ [in, out]
parameters are, but only on VARIANT
parameters.
从以下知识库文章:
VBScript只支持VARIANT ByRef参数,你可以使用VBScript调用一个ByRef字符串的过程,但是使用Visual Basic构建的组件的默认行为是失败,当尝试将ByRef参数传递到这些组件时,错误OLE自动化的默认类型强制函数在被要求将ByRef变体转换为任何其他ByRef类型时失败。
"VBScript only supports VARIANT ByRef parameters. You can use VBScript to call a procedure that takes ByRef strings, but the default behavior of components built with Visual Basic is to fail with a type mismatch error when trying to pass ByRef parameters to these components. OLE Automation's default type-coercion function fails when asked to convert a ByRef variant into any other ByRef type."
此外,以下是有关此主题的其他链接:
Also, here are other links on the topic:
这篇关于使用Foo(...,[out] BSTR * value)从VBScript调用COM方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!