- - PR -
JCOMを使ったDispatchEvents
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-13 20:03
JCOMを使用してDispatchEventsするにはどうしたらよいのでしょうか?
JACOBではDispatchEventsできるのですがJCOMは対応されていないようです。 JCOMの拡張などで対応できるとすれば、どのようにすればよいのでしょうか? ご存知の方、ご教授いただけないでしょうか? 宜しくお願いいたします。 | ||||||||
|
投稿日時: 2006-01-13 22:15
作者です。
JComではできません。また、バージョンアップの予定もありません。ゴメンナサイ。 | ||||||||
|
投稿日時: 2006-01-16 10:04
ご回答ありがとうございます。
作者の方にご返事いただけるとは。うれしいです。 JComではできないことと、バージョンアップもないこと、わかりました。 JACOB以外でDispatchEventsをJavaでやるのはどのような手段があるでしょうか? 1)JComの拡張を自前で行う。 可能なら方針なり指針なりをご教授いただけないでしょうか? 2)JComとは切り離して別の手段を考える。 JACOBを参考に自分で実装する?できるのか? | ||||||||
|
投稿日時: 2006-01-16 12:48
こんにちは。
#私はCOMについては多少理解できますが、Javaはあまり知りません。 「DispatchEvents」ってなんのことなのだろうと思っていたのですが… 「com.jacob.com.DispatchEvents」のことだったんですね!? #なんとなくCOMのイベントのことを指しているんだろうなぁとは思っていたのですが。
JACOBは使わないのでしょう? なにか使えない理由があるのでしょうか?
JACOBのソースのDispatchEvents.cppというファイルが参考になるかと思います。 ちゃんと実装例があるので、技術的にはできないことはないと思います。 #私にはJavaの知識が不足しているので、かなり難しいですけれども(~_~;) ご自身で実装されるのであれば、下記のリンクが参考になるのではないでしょうか。 Architecture of Connectable Objects また次のような前提知識があれば、良いのではないでしょうか。 ・JNIについて C/C++による、JNIの実装方法 ・COM(とくにActiveX Automationあたり)について IUnknownインターフェイス、IDispatchインターフェイスについて ・COMのコネクタブルオブジェクトについて IConnectionPointContainerインターフェイス、IConnectionPointインターフェイス、IProvideClassInfoインターフェイス 理屈的には次のような処理手順を行えば、イベントを受け取ることができると思います。 1.コネクタブルオブジェクト(例えばExcel.Application)に対して、IUnknown::QueryInterfaceを呼び出して IConnectionPointContainerインターフェイスを問い合わせます。 2.つぎに、 IConnectionPointContainer::FindConnectionPointまたは、 IConnectionPointContainer::EnumConnectionPointsを使って IConnectionPointインターフェイスを取得します。 3.クライアント(つまりJava側)で作成したシンクオブジェクト(イベントコールバックを受け取るオブジェクト、 通常IDispatchインターフェイスをサポートする)を IConnectionPoint::Adviseを使って、コネクタブルオブジェクトとの接続を確立する。 4.終了時(イベントが必要なくなった時点)で、IConnectionPoint::Unadviseを呼び出し接続を終了する。 いずれにしても… JComの拡張を自前で行うにしても、自分で実装するにしても 結構大変な作業になるとは思いますけれども(>_<) |
1