- PR -

VBにJavaを

投稿者投稿内容
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-10-28 11:52
引用:

ognacさんの書き込み (2006-10-28 01:14) より:
未記入さん>JDI(Java Debug Interface)使えばできるんじゃない?
え! できるんですか? スレ主じゃないけど,知りたい、教えて欲しい!!



http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jpda/jdi/com/sun/jdi/ObjectReference.html
このあたりかなぁ。
実際にJDIを使ったことはありませんが。
Eclipseのデバッガなどで変数値を入れ替えれるように
オブジェクトの値を差し替えることができるはず。

しかし…
IEコンポーネントにローカルのHTML読み込ませてAppletを起動させて
そいつにJDIなんてデバッガ用のインターフェースつかって外からハックするなんて
よほど珍妙な背景がないとそんな設計にしませんよ。

既存のソースの知れないAppletをハックするんだったら
AppletViewerみたいな代物をJavaで用意するほうがよほどマシでしょう。
って本来の趣旨がなんなのかも不明なのですけどね。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-10-28 11:58
同じく、アプレットビューア+リフレクションでいいような気がします。
案外、クラスとか変数がAとかBになってたりして。。。
ハックする前に、jarファイルをZIP解凍してみましょう。
ognac
ベテラン
会議室デビュー日: 2005/06/21
投稿数: 65
投稿日時: 2006-10-28 12:41
nagiseさん、かつのりさん、ありがとうございます。
>IEコンポーネントにローカルのHTML読み込ませてAppletを起動させて
>同じく、アプレットビューア+リフレクションでいいような気がします。

そうですよね、何らかの形でHookする仕組みは必須で,どの段階で組み込むかの問題になるかと思います。
組み込み方法の難易は別として、怪しげな作りになりそうですね。


_________________
ognac@わんくま同盟
未記入
会議室デビュー日: 2003/02/21
投稿数: 10
投稿日時: 2006-10-28 14:35
JDI使うのが珍妙なのは承知の上で書き込みました。
っていうか元の質問の趣旨わからないんで。

ところで、
「AppletViewerみたいな代物をJavaで用意する」として、
Windowsフォーム上で動かすことは可能なんですか?
いや、やってやれない事とはないと思いますけど、簡単な方法が浮かびませんので。
できれば参考までに教えてください。


# 実はJDI使ったことないです。
# そういうAPIがあるのを知ってるだけです。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-10-30 14:50
引用:

未記入さんの書き込み (2006-10-28 14:35) より:
ところで、
「AppletViewerみたいな代物をJavaで用意する」として、
Windowsフォーム上で動かすことは可能なんですか?
いや、やってやれない事とはないと思いますけど、簡単な方法が浮かびませんので。
できれば参考までに教えてください。



JavaのGUIのコンポーネントをWindowsのフォームに貼り付けたい、と。
もともと別個のバーチャマシン上で動くプログラムを統一して管理するってのが難問ですね。

1.JavaVMのインスタンスを管理するクラス(.NET側)を作る
2.VM外との通信を行うためのクラスを作る(Java側)
3.1のクラスで2のJavaのクラスを起動
4.Windows用のフォームを作り、描画のイベントのたびにJava側に指定座標を通知する
5.Java側では通知をうけた座標にWindowオブジェクトを配置し描画させる

みたいな手法で狙った座標にJavaのコンポーネントを表示し続けるような
ことができるんじゃないかな。
かなり似非統合なのですけども。

本格的にやるんだったらjava.awt.Windowクラスか
javax.swing.JWindowクラスと相当のクラスを作ることになるのでは。
ネイティブコードの実装やらないといけないのと、
Windows側との連携に通信処理が発生するのが面倒ですね。
らざるす
会議室デビュー日: 2002/11/15
投稿数: 11
投稿日時: 2006-10-30 16:02
<Eclipseで逆コンパイルを行う>
http://www.atmarkit.co.jp/fjava/javatips/073eclipse025.html

これを参考に、Javaソースを抜き出してみたら?
Tdnr_Sym
ぬし
会議室デビュー日: 2005/09/13
投稿数: 464
お住まい・勤務地: 明石・神戸
投稿日時: 2006-10-30 17:36
こんにちは。

引用:

らざるすさんの書き込み (2006-10-30 16:02) より:
<Eclipseで逆コンパイルを行う>
http://www.atmarkit.co.jp/fjava/javatips/073eclipse025.html

これを参考に、Javaソースを抜き出してみたら?



AppletViewerのソースコードのことですかね?

JDK6のでよければソースが公開されていますね。
URLは探してみてください。

この辺にAppletViewerのソースがあります。
/j2se/src/share/classes/sun/applet

またJVMの起動方法は、
/j2se/src/share/bin/java.c
が参考になりそうです。

#面白そうなこと(でも難しそう)なことに挑戦してるんですね。
未記入
会議室デビュー日: 2003/02/21
投稿数: 10
投稿日時: 2006-10-30 20:14
「Windowsフォーム上で動かすことは可能なんですか?」と書いた者です。

引用:

1.JavaVMのインスタンスを管理するクラス(.NET側)を作る
2.VM外との通信を行うためのクラスを作る(Java側)
3.1のクラスで2のJavaのクラスを起動
4.Windows用のフォームを作り、描画のイベントのたびにJava側に指定座標を通知する
5.Java側では通知をうけた座標にWindowオブジェクトを配置し描画させる



なるほど、重ねてそれっぽく見せるという発想はなかったです。
勉強になりました。

ところで、私も少し考えてみたのですが、
元のAppletを継承したクラスをIEなどのコンポーネントに貼り付ければ
割と簡単に出来たりしません?
初期化でAppletの参照さえ取れれば後はリフレクションでどうにでもなりそうですし。
VBとの通信もソケットなんかで出来ますし。

#普通ならVBで...という仕様を変えるのでしょうけど...

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