我正在尝试使用 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(); } }