使用Jinterop从Java调用COM api

时间:2012-11-28 12:47:09

标签: java com j-interop

我使用jinterop作为dcom桥。 使用CLASSID我能够创建com对象。

// Create a session
    JISession session = JISession.createSession("domain", "user",
            "password");
    session.useSessionSecurity(true);
    // JISystem.setAutoRegisteration(true);
    JIComServer comServer = new JIComServer(
            JIClsid.valueOf("E4BE20dd4-9F1-4B05-9117-AFB4B295"),
            "ipaddress", session);

    // Instantiate the COM Server
    IJIComObject comObject = comServer.createInstance();

    IJIDispatch ieObjectDispatch = (IJIDispatch) JIObjectFactory
            .narrowObject((IJIComObject) comObject
                    .queryInterface(IJIDispatch.IID));
    IJITypeInfo typeInfo = ieObjectDispatch.getTypeInfo(0); 
    FuncDesc funcDesc = typeInfo.getFuncDesc(0);
 JICallBuilder callObject = new JICallBuilder (true);
      callObject.setOpnum (0);
      callObject.addInParamAsString(new String("API"),JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR);
      callObject.addOutParamAsObject(IJIComObject.class,JIFlags.FLAG_REPRESENTATION_STRING_LPWSTR);

      Object[] result = ieObjectDispatch.call ( callObject );

我的问题是我没有IDL文件的信息(因为它是第三方COM),那么我如何设置callObject.setOpnum(0)的值?

注意:即使我使用调用方法,我收到未知名称[0x80020006]错误。 例: JIVariant [] results = ieObjectDispatch.callMethodA(“COM API name”,params);

请帮帮我..

谢谢, 阿米特

0 个答案:

没有答案