使用COM接口访问对象的属性

时间:2014-03-22 22:39:21

标签: java com jacob

使用JACOB作为桥接器,用java访问模拟器(PTV vissim)的对象,以便能够实时操作它,大多数对象都有方法和属性......我很顺利,因为我使用的是......

getPropertyinvoke函数,但现在我需要访问对象属性,例如名字,但我不知道我应该使用哪个功能,正在处理的对象是

的实例
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 ");

}

1 个答案:

答案 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");