以前、ActiveXで作られた機能をJavaアプリケーション、というか、 SWTアプリケーションから呼び出す必要があり、いろいろ調べたので、メモ。
そのときは、ActiveXのコンポーネントがIEから呼ばれることしか考えられて いなくて、画面の再描画まわりがまともに動かなく、IEコンポーネント経由で 呼び出すという手で逃げた。
まずは参考文献。googleで調べても、JavaのコンポーネントをActiveX化する話は
よく見つかるが、ActiveXのコンポーネントを取り込む話はほとんど見つからない。
dW : Open source : ActiveXコントロールをSWTアプリケーションへ統合する
は、そんな状況の中、非常に役立つページだ。この内容を十分に理解すれば、
他をあたる必要はないだろう。サンプルがAcrobat Reader 5.0なので、実際に
動かしてみるにはちょっと手間がかかるが。そのまま動かす場合、他のバージョンで
代用できるわけではないので注意。ちょっと昔のアプリケーションのCD-ROMを
探せば、Actobat Reader 5.0が見つかるだろう。
他のバージョンのAcrobat Readerを使う場合、あるいは、自分が使いたい ActiveXを使って同様のサンプルをつくってみる場合、サンプルのPDF Viewクラスの 22行目、PDF.PdfCtrl.5を変更する必要がある。ActiveXのインタフェースを定義する 際に使用した名前だ。ついでに、どんなメソッドを公開しておいたかも確認して おこう。記事にあるように、ant activexと実行するとJavaから呼び出せるメソッドが リストアップされるので、見比べるとよい。
通常のActiveXコンポーネントであれば、以上のヒントでJavaアプリケーションに 組み込めるであろう。IE上でしかまともに動かないActiveXであった場合、 素直にIEコンポーネント経由で呼び出すようにした方がいい。 IEコンポーネントも1種のActiveXなので、同様の手順で組み込める。 組み込めるだけはなく、読み込んだページ中にあるJavaScriptをメソッドとして 呼び出すことが可能だ。だから、ActiveXの提供するメソッドをすべてJavaScriptから 呼び出すようにすれば、SWTからIEコンポーネント経由でActiveXのメソッドを 呼び出せる。また、メソッドをJavaScriptで拡張できるというのも、大きなメリットで あろう。