【问题标题】:From jscript (or vbscript) how to dynamically invoke a method from a COM object?从 jscript(或 vbscript)如何从 COM 对象动态调用方法?
【发布时间】:2011-09-25 14:37:11
【问题描述】:

JScript 允许使用 .apply() 之类的时髦功能,您可以通过名称调用方法,传递参数数组来调用方法。但是,这适用于 JScript (javascript) 对象,显然不适用于 COM 组件 - 但这是我正在寻找的功能。

有没有办法通过名称和来自 JScript 的动态参数调用 COM 对象方法?我找不到任何东西。

谢谢!

【问题讨论】:

    标签: reflection com vbscript wsh jscript


    【解决方案1】:

    动态构建您想要作为字符串调用的脚本,然后使用 eval() 调用它。例如eval("someObj.method()")eval(objName + "." + methodName + "(" + args.join(",") +")")

    【讨论】:

    • 感谢您的回复。 eval() 的主要问题是我无法传递动态数量的参数。 methodOne() 可以接受一个参数,而 methodTwo() 可以接受两个参数。
    • @Troy - eval 接受一个字符串,因此您可以动态构建它。我添加了一个示例。
    • 对不起...我的回答不清楚 :( 虽然你可以构建字符串,但没有反射可以知道要传递多少个参数。
    【解决方案2】:

    由于我使用的是 WSC(Windows 脚本组件),因此我制定了一种解决方法,即使用 XSL 生成包装脚本,转换输入 WSC(这是一个 XML 文件)。 XSL 为每个方法生成一个带有 case 的 switch{} 语句,为每个方法提供正确数量的参数。

    不完全是我所追求的,但我得到了更好的错误检查:)

    【讨论】:

      猜你喜欢
      • 2011-06-20
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 2013-03-23
      相关资源
      最近更新 更多