- ベストアンサー
Visual BasicでJavaアプレットを操作したい
いつもお世話になっております。 Visual BasicでIE上のJavaアプレットのボタンやドロップダウンリストを操作することはできないでしょうか。JavaアプレットのActiveXオブジェクトのメソッドやプロパティが分かればできるような気がするのですが、どのように調べればいいのかも分かりません。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>Visual Basicと書いた方がより広範な意見が聞けると判断したためです VBが全部、VBAやVB6以前の作りになっているわけじゃない (VB.NETでは作りがまったく違います)ので、 バージョンをお聞きしました。 ということで、今回は、VBA(VB6以前)の話を前提ということでご回答いたします。 >「HTML要素へのアクセス#3 (APPLETオブジェクト)」を見たからです。 できると思います。 というのもExcel VBAではわかりませんが、VB6でブラウザコントロール (もしくは、IEコンポーネントという言い方をしますが)を 使えば、HTMLのエレメントの中や貼り付けられている画像、JavaApplet なども参照可能だからです。 # IEコンポーネントをCreateObjectして、 その中にあるJavaAppletのHTML要素を取得すれば、 VBAでもできると思います。(試していないので自信はないです) >http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/techinfo.htm OLE/COM Object Viewerは使っていません。 OLE/COM Object Viewerを使っていない理由は、タイプライブラリを 使いたくなかったからということでしょうか? タイプライブラリを生成させてやった方が、VB上のコーディングは 確かに楽ですが、 http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/techinfo.htm を試してみようとした意図が良くわからないのですが... ということで、少しまとめると、 ・IEコンポーネントまたは、ブラウザコントロールを使って、 JavaAppletが定義されている要素を探す処理を作る 例えは違いますが、 http://oshiete1.goo.ne.jp/kotaeru.php3?qid=1519932 あたりが似たようなことやっているので、参考になるのではと 思います。 (気になるのは、VB.NETの例になっていることですね。 ただ、スレ主が納得しているようなので、ある程度参考になる んじゃないかと思います) ・JavaAppletの中にあるコントロールを動かすためには、 JavaAppletで公開されているパラメータがあるはずなので、 そのパラメータをブラウザ内から、JavaApplet用HTML要素を 取得&設定して、JavaAppletを操作する で、実装できないかという感じになります。 あまり自信がないので、参考になるかわかりませんが、 ある程度、ヒントになれば幸いです。
その他の回答 (3)
- PED02744
- ベストアンサー率40% (157/390)
よくわかりませんが、、 JAVAアプレットはActiveXではない(少なくともActiveXオブジェクト名は表に出ない)です。 また、Javaアプレットで操作できるのは、publicメソッドやpublicメンバだけです。 例えばbutton1というボタンがあったとしても、これがpublicでなければ外部からアクセスできません。 というか、どうやってJAVAのクラスメソッド名などを知るつもりですか? JARファイルからJAVAクラスを抜き出して、それを逆コンパイルするのでしょうか? 余り一般的ではないですし、著作物人格権的にちょっとグレーです。 ※リバースエンジニアリングの禁止 じゃあ、できないのか? っていうと、ActiveXとしての操作はできませんが、別のアプローチでできます。 それは、WindowsAPIを使って、画面上の全てのオブジェクトの情報を取得して、手でマウスを使ってクリックするように、ボタンを無理やりWindowsに押させる方法です。 市販されているソフトでは、自動試験ソフトがそれにあたります。
補足
PED02744様、回答ありがとうございます。 これまで頂いた回答で私は、自分の力ではどうにもならないことをやろうとしていると知らされたようです。 >それは、WindowsAPIを使って、画面上の全てのオブジェクトの情報を取得して、手でマウスを使ってクリックするように、ボタンを無理やりWindowsに押させる方法です。 初歩的な質問ばかりで恐縮ですが、WindowsAPIってどうやって使うんですか。アプリケーション同士をつなぐ関数が集められたものであると、漠然と解釈していますが、この解釈で合っているのかどうかも分かりません。PED02744様がおっしゃっていることで私がやりたいことが出来るのではないかと思いますが、具体的な例があれば理解が進むと思うのですが。 例えば、Javaアプレットにbutton1だけがあって、そのbutton1を押すためにはどのようにVBAでコードを書けばいいのでしょうか。 よろしくお願いいたします。
- kero_mio
- ベストアンサー率90% (94/104)
>VBAでIEや外部プログラムを制御する方法を勉強するのにちょうど良いサイトや書籍をご存じでしたら紹介していただけないでしょうか。 Win32 OLE系の書籍やサイトがお勧めかなと思います。 たぶん、VBAでこの手をものを捜すのは難しいので、 VB6用のWin32 OLE系の書籍・サイトを探してみてください。 (書き方は、VB6もVBAも同じですから) 後、VBではなく、Rubyでの例になってしまうのですが、 IEコンポーネントの操作方法が、Win32 OLEで掲載されている サイトを発見したので、お知らせします。 (表現がRubyとVBで違いますが、ある程度、VBでどう表現を置き換えればいいかはサンプルコードから検討がつきます。) http://jp.rubyist.net/magazine/?0003-Win32OLE ご参考になれば幸いです。
お礼
kero_mio様、度々ありがとうございます。 参考にさせていただきます。私は随分大変なことをやろうとしているんだと感じています。 また、アドバイスよろしくお願いします。
- kero_mio
- ベストアンサー率90% (94/104)
配置するJavaAppletのつくりによっても、設定するプロパティや パラメータは変わってくると思います。 (JavaAppletもJDKの標準コントロールを使っているのであれば いいですが、手作りコントロールだと、話は変わってきます) なので、どんなJavaAppletをVB上で配置したいのか、 JavaAppletの内容(ソースでもいいので)とかあれば ご教示願います。 また、VBのバージョンは、何を使っているのか? (VB6?VB.NET 2002?VB.NET 2003?VB.NET 2005?) についても合わせてご教示下さい。 その上でわかる範囲でご回答します。宜しくお願いします。
補足
kero_mio様、回答ありがとうございます。 以下、補足というか、お詫びというか、再質問です。 Visual BasicでJavaアプレットを操作したいと書きましたが、実はExcel2000のVBAでそのような操作ができないかと思っています。Visual Basicと書いた方がより広範な意見が聞けると判断したためです。申し訳ありません。さらに、Javaアプレットは自作ではなくあるサイト上に表示されるものを操作したいのです。 ですので、Javaアプレットの内容と言っても全く分からないと言うのが実情です。実際にそのサイトを見てもらいたいのですが、URLに私の個人情報が含まれるためここに記載することができません。 Visual Basic(VBA)でJavaアプレットを操作できるのではと思った経緯は下記URLにある「HTML要素へのアクセス#3 (APPLETオブジェクト)」を見たからです。 http://iriyak.adam.ne.jp/uwsc.html UWSCはVB(VBA)とは関係無いようですが、自作のスクリプト言語でできることなら完成されたプログラム言語であるVB(VBA)にだってできると勝手に判断したのです。 さらに下記URLにある「ActiveXオブジェクトの仕様を知る方法」の内容からJavaアプレットのActiveXオブジェクトさえ分かればWSHでできるならVB(VBA)にも・・・と言うことです。 http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/techinfo.htm OLE/COM Object Viewerは使っていません。OKWaveで良い回答が得られなかったら試してみようと思っていました。 やはり、サイトの制作者にJavaアプレットの詳細を聞くしかないのでしょうか。 よろしくお願いいたします。
お礼
kero_mio様、ご回答ありがとうございます。 お礼が遅くなり申し訳ありませんでした。 上記の内容を吟味してから、再度質問なりお礼をしようと思っていたのですが、私の力では時間がかかってしまいそうなので、取り急ぎお礼をさせていただいた次第です。 >・IEコンポーネントまたは、ブラウザコントロールを使って、 JavaAppletが定義されている要素を探す処理を作る >・JavaAppletの中にあるコントロールを動かすためには、 JavaAppletで公開されているパラメータがあるはずなので、 そのパラメータをブラウザ内から、JavaApplet用HTML要素を 取得&設定して、JavaAppletを操作する この方法を自分で調査してみます。行き詰まったらまた質問をさせていただきますのでよろしくお願いします。
補足
VBAでIEや外部プログラムを制御する方法を勉強するのにちょうど良いサイトや書籍をご存じでしたら紹介していただけないでしょうか。