Java 使用COM接口访问对象的属性
我使用JACOB作为java的桥梁来访问模拟器(PTV vissim)的对象为了能够实时操作它,大多数对象都有方法和属性。。。我做得很好,因为我用的是Java 使用COM接口访问对象的属性,java,com,jacob,Java,Com,Jacob,我使用JACOB作为java的桥梁来访问模拟器(PTV vissim)的对象为了能够实时操作它,大多数对象都有方法和属性。。。我做得很好,因为我用的是 getProperty和invoke函数,但现在我需要访问对象属性,例如name,但我不知道应该使用哪个函数,正在处理的对象是 ActiveXComponent package com.vissim; import java.util.List; import java.util.Scanner; import com.jacob.acti
getProperty
和invoke
函数,但现在我需要访问对象属性,例如name,但我不知道应该使用哪个函数,正在处理的对象是
ActiveXComponent
package com.vissim;
import java.util.List;
import java.util.Scanner;
import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Variant;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Vissim vissim = new Vissim();
vissim.start();
vissim.LoadNet("H:\\MY VISSIM\\projects\\new.inpx");
Net net = new Net(vissim);
ActiveXComponent linkContainer = net.getNetProperty("links");
System.out.println("links fetched");
ActiveXComponent link =linkContainer.invokeGetComponent("itemByKey", new Variant(1));
// the problem is here , i need to do something like
//link.getProperty("Attributes");
System.out.println("we are here ");
}
使用com4j生成一些包装文件。com4j可能会崩溃,因为它无法处理某些类型,但如果您转到生成的java文件,您将看到可以从Dispatch对象调用的所有方法的名称,例如,
ISimulation。java
将拥有可以在模拟对象上调用的所有方法。
下面是一些函数/方法调用的示例:
Dispatch vissim = VISSIM.getObject();
Dispatch.call(vissim, "loadNet", new Object[]{new Variant("C:\\Users\\userName\\workspace\\VISSIMNetworks\\network.inp"), new Variant(0)});
Dispatch simulation = Dispatch.call(vissim, "simulation").toDispatch();
Dispatch.call(simulation, "runContinuous");