I am having a problem accessing a secondary interface from a COM object written in visual basic. I want to gain access to the secondary interface and wrap an automation around it to invoke the methods. I am able to gain access to the interface fine, but when I try to invoke methods from the automation object, I get exceptions. I have attached the project in a zip that also contains the VB dll that contains the objects I am working with. Below is the class that I am using to interface with the COM objects.
package test;
import com.captovation.project1.ITest;
import com.captovation.project1.TestClass;
import com.captovation.project1._ITest;
import com.captovation.project1._TestClass;
import com.jniwrapper.Function;
import com.jniwrapper.Parameter;
import com.jniwrapper.win32.automation.Automation;
import com.jniwrapper.win32.automation.IDispatch;
import com.jniwrapper.win32.automation.impl.IDispatchImpl;
import com.jniwrapper.win32.automation.types.Variant;
import com.jniwrapper.win32.com.ComFunctions;
import com.jniwrapper.win32.com.IUnknown;
import com.jniwrapper.win32.com.impl.IUnknownImpl;
import com.jniwrapper.win32.com.types.CLSID;
import com.jniwrapper.win32.com.types.ClsCtx;
import com.jniwrapper.win32.com.types.IID;
import com.jniwrapper.win32.ole.OleFunctions;
import com.sun.xml.internal.ws.client.dispatch.DispatchImpl;
public class InterfaceTest {
public InterfaceTest() {
// Create an instance of the testclass object.
CLSID testClassID = CLSID.createFromProgID("Project1.TestClass");
IUnknown tc = ComFunctions.coCreateInstance(testClassID, null, ClsCtx.INPROC_SERVER);
IDispatch idsp = new IDispatchImpl();
tc.queryInterface(new IID("{EB1B1EF8-0B03-438A-8D4F-85A6DBDDBC09}"), idsp);
OleFunctions.oleRun(idsp);
Automation auto = new Automation(idsp);
Variant var = auto.invoke("test1");
}
public static void main(String[] args) {
// Initialize COM support.
ComFunctions.coInitialize();
InterfaceTest it = new InterfaceTest();
// Terminate COM support.
ComFunctions.coUninitialize();
}
}
- InterfaceTest.zip (36.4 K)