JACOB을 사용하여 COM 개체와 상호 작용하려고합니다.JACOB (Java/COM/ActiveX) - 이벤트 처리 문제를 해결하는 방법?
개체에 대한 초기화 메서드를 호출 할 수 있었고 (해당 속성을 가져올 수는 있지만) 이벤트를 다시 가져 오지 못했습니다. 코드는 아래에 인용되어 있습니다.
동일한 개체에서 이벤트를 성공적으로받는 예제 HTML + Javascript 페이지 (IE에서 실행)가 있습니다.
나는 다음과 같은 옵션을 고려하고 있지만, 어떤 구체적인 문제 해결 아이디어를 부탁드립니다 ...
그들에 의심스러운 아무것도 찾을 COM 개체를 개발 한 팀에 내 자바 프로그램을 전송하고, 이 자신의 (클라이언트가 이벤트를 듣고 있는지, 그리고 성공적으로 전달되었는지 여부를 알 수있는 방법이 있습니까?)
JACOB의 기본 부분으로 들어가 디버깅을 시도하십시오. 내 C++이 녹슬었고 Windows 용으로 프로그래밍 한 적도 없다는 점을 감안하면 조금 무서운 것입니다. COM 개체는 윈도우의 컨텍스트에서 실행된다고 보여 눈에 보이지 않는 ActiveX 컨트롤로 기록 된 것을
그것은 밝혀졌다 :
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(); } }