- - PR -
VBにJavaを
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-10-28 11:52
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で用意するほうがよほどマシでしょう。 って本来の趣旨がなんなのかも不明なのですけどね。 | ||||
|
投稿日時: 2006-10-28 11:58
同じく、アプレットビューア+リフレクションでいいような気がします。
案外、クラスとか変数がAとかBになってたりして。。。 ハックする前に、jarファイルをZIP解凍してみましょう。 | ||||
|
投稿日時: 2006-10-28 12:41
nagiseさん、かつのりさん、ありがとうございます。
>IEコンポーネントにローカルのHTML読み込ませてAppletを起動させて >同じく、アプレットビューア+リフレクションでいいような気がします。 そうですよね、何らかの形でHookする仕組みは必須で,どの段階で組み込むかの問題になるかと思います。 組み込み方法の難易は別として、怪しげな作りになりそうですね。 _________________ ognac@わんくま同盟 | ||||
|
投稿日時: 2006-10-28 14:35
JDI使うのが珍妙なのは承知の上で書き込みました。
っていうか元の質問の趣旨わからないんで。 ところで、 「AppletViewerみたいな代物をJavaで用意する」として、 Windowsフォーム上で動かすことは可能なんですか? いや、やってやれない事とはないと思いますけど、簡単な方法が浮かびませんので。 できれば参考までに教えてください。 # 実はJDI使ったことないです。 ![]() # そういうAPIがあるのを知ってるだけです。 | ||||
|
投稿日時: 2006-10-30 14:50
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側との連携に通信処理が発生するのが面倒ですね。 | ||||
|
投稿日時: 2006-10-30 16:02
<Eclipseで逆コンパイルを行う>
http://www.atmarkit.co.jp/fjava/javatips/073eclipse025.html これを参考に、Javaソースを抜き出してみたら? | ||||
|
投稿日時: 2006-10-30 17:36
こんにちは。
AppletViewerのソースコードのことですかね? JDK6のでよければソースが公開されていますね。 URLは探してみてください。 この辺にAppletViewerのソースがあります。 /j2se/src/share/classes/sun/applet またJVMの起動方法は、 /j2se/src/share/bin/java.c が参考になりそうです。 #面白そうなこと(でも難しそう)なことに挑戦してるんですね。 | ||||
|
投稿日時: 2006-10-30 20:14
「Windowsフォーム上で動かすことは可能なんですか?」と書いた者です。
なるほど、重ねてそれっぽく見せるという発想はなかったです。 勉強になりました。 ところで、私も少し考えてみたのですが、 元のAppletを継承したクラスをIEなどのコンポーネントに貼り付ければ 割と簡単に出来たりしません? 初期化でAppletの参照さえ取れれば後はリフレクションでどうにでもなりそうですし。 VBとの通信もソケットなんかで出来ますし。 #普通ならVBで...という仕様を変えるのでしょうけど... |