我实例化一个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中定义了枚举?
我需要以某种方式将枚举传递给方法,但我不知道如何访问它。
我尝试将Enum作为ActiveXComponent,
new ActiveXComponent("MyDll.ReturnDeletedModeEnum");
(毫不奇怪)不起作用:
com.jacob.com.ComFailException: Can't get object clsid from progid
我尝试了一些关于Jacob的文档,因为似乎有特定于Enum的类,但我没有找到关于如何使用它们的任何解释。
答案 0 :(得分:0)
当我需要使用Enummeration参数调用方法时,我遇到了同样的不确定性。我找不到太多文档 - JACOB或其他。
我偶然发现了helpful post on the subject the values ... correspond to internally stored numbers
和An enumeration in VBA is always of data type Long
。
有了这个和MS Documentation for my particular Enumeration,我试了一下......
Dispatch.call(oDocuments, "Open", fileIn, ... , new Variant(1L));
它有效!
我确定有办法实现"枚举"数据结构,但这对我来说已经足够了。