使用JACOB作为桥接器,用java访问模拟器(PTV vissim)的对象,以便能够实时操作它,大多数对象都有方法和属性......我很顺利,因为我使用的是......
getProperty
和invoke
函数,但现在我需要访问对象属性,例如名字,但我不知道我应该使用哪个功能,正在处理的对象是
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 ");
}
答案 0 :(得分:0)
使用com4j生成一些包装文件。 com4j可能会崩溃,说它无法处理某些类型,但是如果你转到生成的java文件,你会看到可以从Dispatch对象调用的所有方法的名称,例如: ISimulation.java
将拥有您可以在Simulation对象上调用的所有方法。
以下是一些函数/方法调用的示例:
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");