JACOB を使用して COM オブジェクトと対話しようとしています。
オブジェクトで初期化メソッドを呼び出す (およびそのプロパティを取得する) ことはできましたが、イベントを取得できません。以下にコードを引用します。
同じオブジェクトからイベントを正常に受信するサンプル HTML+Javascript ページ (IE で実行) があります。
次のオプションを検討していますが、具体的なトラブルシューティングのアイデアをいただければ幸いです...
私の Java プログラムを COM オブジェクトを開発したチームに送り、彼らの側で疑わしいものを探してもらいます (オブジェクトには、そのイベントをリッスンしているクライアントがいるかどうか、およびイベントが正常に配信されたかどうかを知る方法がありますか?)
JACOB のネイティブ部分に入り、その側でデバッグしてみてください。私の C++ は錆びていて、Windows 用にプログラミングしたことがないことを考えると、これは少し怖いことです。
public static void main(String[] args) { 試す { ActiveXComponent c = 新しい ActiveXComponent( "CLSID:{********-****-****-****-************}"); // オブジェクトの clsid if (c != null) { System.out.println("バージョン:"+c.getProperty("バージョン")); InvocationProxy プロキシ = 新しい InvocationProxy() { @オーバーライド public Variant invoke(String methodName, Variant[] targetParameters) { System.out.println("*** イベント ***: " + メソッド名); null を返します。 } }; DispatchEvents de = new DispatchEvents((Dispatch) c.getObject(), proxy); c.invoke("Init", new Variant[] { new Variant(10), //param1 new Variant(2), //param2 }); System.out.println("イベントを待っています..."); Thread.sleep(60000); // 60 秒で十分です System.out.println("クリーンアップ中 ..."); c.safeRelease(); } キャッチ(例外e){ e.printStackTrace(); } 最後に { ComThread.Release(); } }