【问题标题】:calling COM method with Foo(..., [out] BSTR * value) from VBScript使用 Foo(..., [out] BSTR * value) 从 VBScript 调用 COM 方法
【发布时间】:2011-08-04 13:01:24
【问题描述】:

是否可以调用带有签名的 COM 方法

 HRESULT Foo(BSTR in, [out] BSTR * out1, [out] BSTR * out2)

来自 VBScript?

以下内容:

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

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


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

【问题讨论】:

    标签: com vbscript method-signature


    【解决方案1】:

    似乎不支持输出参数;虽然 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 自动化的默认类型强制功能失败。"

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

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

    【讨论】:

    • 谢谢,我添加了一个带有“VBS-enabled”签名的单独方法([ref] VARIANT *
    • @peterchen 请您将COM 方法的签名和VARIANT 的声明以及VBScript 中的方法调用发布。对于同样的问题,我似乎找不到一个很好的例子。
    猜你喜欢
    • 1970-01-01
    • 2010-10-14
    • 2011-07-03
    • 1970-01-01
    • 2011-06-20
    • 2011-09-25
    • 2013-03-15
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多