4

我实例化一个 COM 对象,然后调用一个方法。

ActiveXComponent comp = new ActiveXComponent("MyDll.MyClass");

String argument1 = "test1";
String argument2 = "test2";

Variant[] arguments = { new Variant(argument1), new Variant(argument2) };

comp.invoke("myMethod", arguments)

假设 MyDll 有一个名为的方法

myMethod(String s1, String s2) 

它工作正常。

现在,如果我有一个方法怎么办

myMethod(String s1, ReturnDeletedModeEnum enum)

使用 MyDll 中定义的枚举?

我需要以某种方式将枚举传递给该方法,但我不知道如何访问它。

我尝试将枚举作为 ActiveXComponent,

new ActiveXComponent("MyDll.ReturnDeletedModeEnum");

这(不足为奇)不起作用:

com.jacob.com.ComFailException: Can't get object clsid from progid

我尝试找到更多关于 Jacob 的文档,因为似乎有特定于 Enum 的类,但我没有找到任何关于如何使用它们的解释。

4

1 回答 1

0

当我需要调用带有枚举参数的方法时,我遇到了同样的不确定性。我找不到太多文档——JACOB 或其他。

我确实偶然发现了一篇关于该主题的有用帖子,上面写着the values ... correspond to internally stored numbersand An enumeration in VBA is always of data type Long

有了这个和我的特定枚举的 MS 文档,我试了一下......

Dispatch.call(oDocuments, "Open", fileIn, ... ,  new Variant(1L));

它奏效了!

我确信有一种方法可以获得实际的“枚举”数据结构,但这对我来说已经足够了。

于 2016-03-11T15:26:25.480 回答