【发布时间】:2020-03-16 20:07:18
【问题描述】:
我使用安装了“windows”包的 Octave 5.1.0(来自 Octave Forge)。 我用它来访问一个windows应用程序的COM接口。
我可以使用以下命令查看 COM 函数:
h = actxserver('MyApp.Application')
com_invoke(h)
我可以访问不带任何参数的 COM 函数:
com_invoke(h, "GetStatus")
但是,对于带有一个参数的函数,我找不到正确的语法。 我在下面尝试了这些都无济于事:
com_invoke(h, "SetType", 1)
com_invoke(h, "SetType(1)")
com_invoke(h, "SetType", {1})
com_invoke(h, "SetType", ({1}))
com_invoke(h, "SetType[1]")
com_invoke(h, "SetType", [1])
com_invoke(h, "SetType", "1")
我一直在网上搜索,找不到任何信息。
调用接受输入参数的 COM 函数的正确方法是什么?
【问题讨论】:
-
这个“windows”包(源代码在这里:sourceforge.net/p/octave/windows/ci/default/tree/src/__COM__.cc)似乎支持一组有限的 COM/Automation 类型。因此,它可能无法正常工作,具体取决于您的“MyApp.Application”COM 对象。
-
@SimonMourier 感谢西蒙。它只是一个带有 1 个参数的函数,我想它很常见并且经常需要。反正我当时好像不能用了。
-
它与参数的数量无关,而更多地与它们的类型和/或方向(in/out/ref 等)有关。正如您可以查看源代码,octave_to_com 函数似乎仅支持 BSTR(字符串)BOOL(布尔)、R8(IEEE 双精度)、R8 数组、VARIANT 数组和 IDISPATCH(对象)。这并未涵盖您可以在 COM 对象中构建的所有内容。
-
@SimonMourier 哦,我明白了。谢谢。
标签: windows com octave ole forge