我正在尝试使用 JACOB 与 COM 对象进行交互。
我能够在对象上调用初始化方法(并获取其属性),但没有得到任何事件。下面引用了代码。
我有一个示例 HTML+Javascript 页面(在 IE 中运行),它成功接收来自同一对象的事件。
我正在考虑以下选项,但希望有任何具体的故障排除想法......
将我的 Java 程序发送给开发 COM 对象的团队,让他们寻找任何可疑的东西(对象是否有办法知道是否有客户端在监听其事件,以及它们是否成功交付?)
进入 JACOB 的本机部分并尝试在该端进行调试。这有点吓人,因为我的 C++ 生锈了,而且我从来没有为 Windows 编程过。
公共静态无效主要(字符串[]参数){
尝试 {
ActiveXComponent c = 新的 ActiveXComponent(
"CLSID:{********-****-****-****-************}"); // 我的对象的 clsid
如果(c!= null){
System.out.println("版本:"+c.getProperty("版本"));
InvocationProxy 代理 = 新 InvocationProxy() {
@覆盖
公共变体调用(字符串方法名,变体[]目标参数){
System.out.println("*** 事件***:" + methodName);
返回空值;
}
};
DispatchEvents de = new DispatchEvents((Dispatch) c.getObject(), proxy);
c.invoke("初始化", new Variant[] {
新变体(10),//参数1
新变体(2),//参数2
});
System.out.println("等待事件...");
线程.sleep(60000); // 60 秒足够长
System.out.println("正在清理...");
c.safeRelease();
}
} 捕捉(异常 e){
e.printStackTrace();
} 最后 {
ComThread.Release();
}
}