J'essaie d'utiliser JACOB pour interagir avec un objet COM.JACOB (Java/COM/ActiveX) - Comment dépanner la gestion des événements?
J'ai été capable d'invoquer une méthode d'initialisation sur l'objet (et d'obtenir ses propriétés), mais je ne récupère aucun événement. Le code est cité ci-dessous.
J'ai un exemple de page HTML + Javascript (fonctionnant dans IE) qui reçoit avec succès les événements du même objet.
J'envisage les options suivantes, mais apprécierais toutes les idées de dépannage en béton ...
Envoyer mon programme Java à l'équipe qui a développé l'objet COM, et ont les recherchent quelque chose de suspect sur leur côté (ne l'objet ont une façon de savoir s'il y a un client écoute de ses événements, et si elles ont été livrées avec succès?)
Mettez-vous dans les parties natives de JACOB et essayer de déboguer de ce côté. C'est un peu effrayant étant donné que mon C++ est rouillé et que je n'ai jamais programmé pour Windows.
public static void main(String[] args) { try { ActiveXComponent c = new ActiveXComponent( "CLSID:{********-****-****-****-************}"); // My object's clsid if (c != null) { System.out.println("Version:"+c.getProperty("Version")); InvocationProxy proxy = new InvocationProxy() { @Override public Variant invoke(String methodName, Variant[] targetParameters) { System.out.println("*** Event ***: " + methodName); return 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("Wating for events ..."); Thread.sleep(60000); // 60 seconds is long enough System.out.println("Cleaning up ..."); c.safeRelease(); } } catch (Exception e) { e.printStackTrace(); } finally { ComThread.Release(); } }