- PR -

JCOMを使ったDispatchEvents

1
投稿者投稿内容
ぱい
会議室デビュー日: 2006/01/13
投稿数: 4
投稿日時: 2006-01-13 20:03
JCOMを使用してDispatchEventsするにはどうしたらよいのでしょうか?
JACOBではDispatchEventsできるのですがJCOMは対応されていないようです。
JCOMの拡張などで対応できるとすれば、どのようにすればよいのでしょうか?
ご存知の方、ご教授いただけないでしょうか?
宜しくお願いいたします。
a-san
ベテラン
会議室デビュー日: 2004/06/01
投稿数: 53
投稿日時: 2006-01-13 22:15
作者です。
JComではできません。また、バージョンアップの予定もありません。ゴメンナサイ。
ぱい
会議室デビュー日: 2006/01/13
投稿数: 4
投稿日時: 2006-01-16 10:04
ご回答ありがとうございます。
作者の方にご返事いただけるとは。うれしいです。
JComではできないことと、バージョンアップもないこと、わかりました。
JACOB以外でDispatchEventsをJavaでやるのはどのような手段があるでしょうか?
1)JComの拡張を自前で行う。
可能なら方針なり指針なりをご教授いただけないでしょうか?
2)JComとは切り離して別の手段を考える。
JACOBを参考に自分で実装する?できるのか?
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-01-16 12:48
こんにちは。
#私はCOMについては多少理解できますが、Javaはあまり知りません。

「DispatchEvents」ってなんのことなのだろうと思っていたのですが…
「com.jacob.com.DispatchEvents」のことだったんですね!?
#なんとなくCOMのイベントのことを指しているんだろうなぁとは思っていたのですが。

引用:

ぱいさんの書き込み (2006-01-16 10:04) より:

JACOB以外でDispatchEventsをJavaでやるのはどのような手段があるでしょうか?


JACOBは使わないのでしょう?
なにか使えない理由があるのでしょうか?

引用:

2)JComとは切り離して別の手段を考える。
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

スキルアップ/キャリアアップ(JOB@IT)