• ベストアンサー

Visual BasicでJavaアプレットを操作したい

いつもお世話になっております。 Visual BasicでIE上のJavaアプレットのボタンやドロップダウンリストを操作することはできないでしょうか。JavaアプレットのActiveXオブジェクトのメソッドやプロパティが分かればできるような気がするのですが、どのように調べればいいのかも分かりません。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.2

>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を操作する で、実装できないかという感じになります。 あまり自信がないので、参考になるかわかりませんが、 ある程度、ヒントになれば幸いです。

center69
質問者

お礼

kero_mio様、ご回答ありがとうございます。 お礼が遅くなり申し訳ありませんでした。 上記の内容を吟味してから、再度質問なりお礼をしようと思っていたのですが、私の力では時間がかかってしまいそうなので、取り急ぎお礼をさせていただいた次第です。 >・IEコンポーネントまたは、ブラウザコントロールを使って、   JavaAppletが定義されている要素を探す処理を作る >・JavaAppletの中にあるコントロールを動かすためには、   JavaAppletで公開されているパラメータがあるはずなので、   そのパラメータをブラウザ内から、JavaApplet用HTML要素を   取得&設定して、JavaAppletを操作する この方法を自分で調査してみます。行き詰まったらまた質問をさせていただきますのでよろしくお願いします。

center69
質問者

補足

VBAでIEや外部プログラムを制御する方法を勉強するのにちょうど良いサイトや書籍をご存じでしたら紹介していただけないでしょうか。

その他の回答 (3)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

よくわかりませんが、、 JAVAアプレットはActiveXではない(少なくともActiveXオブジェクト名は表に出ない)です。 また、Javaアプレットで操作できるのは、publicメソッドやpublicメンバだけです。 例えばbutton1というボタンがあったとしても、これがpublicでなければ外部からアクセスできません。 というか、どうやってJAVAのクラスメソッド名などを知るつもりですか? JARファイルからJAVAクラスを抜き出して、それを逆コンパイルするのでしょうか? 余り一般的ではないですし、著作物人格権的にちょっとグレーです。 ※リバースエンジニアリングの禁止 じゃあ、できないのか? っていうと、ActiveXとしての操作はできませんが、別のアプローチでできます。 それは、WindowsAPIを使って、画面上の全てのオブジェクトの情報を取得して、手でマウスを使ってクリックするように、ボタンを無理やりWindowsに押させる方法です。 市販されているソフトでは、自動試験ソフトがそれにあたります。

center69
質問者

補足

PED02744様、回答ありがとうございます。 これまで頂いた回答で私は、自分の力ではどうにもならないことをやろうとしていると知らされたようです。 >それは、WindowsAPIを使って、画面上の全てのオブジェクトの情報を取得して、手でマウスを使ってクリックするように、ボタンを無理やりWindowsに押させる方法です。 初歩的な質問ばかりで恐縮ですが、WindowsAPIってどうやって使うんですか。アプリケーション同士をつなぐ関数が集められたものであると、漠然と解釈していますが、この解釈で合っているのかどうかも分かりません。PED02744様がおっしゃっていることで私がやりたいことが出来るのではないかと思いますが、具体的な例があれば理解が進むと思うのですが。 例えば、Javaアプレットにbutton1だけがあって、そのbutton1を押すためにはどのようにVBAでコードを書けばいいのでしょうか。 よろしくお願いいたします。

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.3

>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 ご参考になれば幸いです。

center69
質問者

お礼

kero_mio様、度々ありがとうございます。 参考にさせていただきます。私は随分大変なことをやろうとしているんだと感じています。 また、アドバイスよろしくお願いします。

  • kero_mio
  • ベストアンサー率90% (94/104)
回答No.1

配置するJavaAppletのつくりによっても、設定するプロパティや パラメータは変わってくると思います。 (JavaAppletもJDKの標準コントロールを使っているのであれば いいですが、手作りコントロールだと、話は変わってきます) なので、どんなJavaAppletをVB上で配置したいのか、 JavaAppletの内容(ソースでもいいので)とかあれば ご教示願います。 また、VBのバージョンは、何を使っているのか? (VB6?VB.NET 2002?VB.NET 2003?VB.NET 2005?) についても合わせてご教示下さい。 その上でわかる範囲でご回答します。宜しくお願いします。

center69
質問者

補足

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アプレットの詳細を聞くしかないのでしょうか。 よろしくお願いいたします。

関連するQ&A

  • XP は JAVAアプレットの展開が遅い?

    ある同じJAVAアプレットを、Windos2000とXP で動かしたのでは、XPの方があきらかに遅いのです。 ハード的にもグレードアップして、メモリも十分なはずなのに。 なんとかJAVAアプレット(というか、IEそのものが遅いような)を早くする方法はないでしょうか。

  • Lunascapeでjavaアプレットが表示されない。

    タブブラウザのLunascapeを使っています。 IEでは正常に表示されるJavaアプレットがグレーの表示だけになってしまいます。 全てのアプレットではなくインターネット上の一部のアプレットと自分のパソコンの中のものだけです。 java plug-inは入っています。 OSはWinXPです。 宜しくお願い致します。

  • Javaアプレットについて

    今、Javaを勉強中なのですが、Javaアプレットとは下記の様なブラウザ上で起動するもののことをいうんでしょうか? http://www.typing.sakura.ne.jp/sushida/ これはJavaアプレットに入るのでしょうか? また、CabosやiTunesはJavaアプレット?? 電化製品店で売ってるようなIEを経由しないタイピングソフト等はJavaアプレットではないですよね?

  • Javaって使われてる??

    いろいろと流行っているJavaですが、 PC上で動いているJava製のソフトウェアは 見たことがありませんし、 アプレットもあまり見たことがない。 Javaって本当に世間で使われているんでしょうか。 (iアプリ、サーブレットぐらい?) むしろオブジェクト指向の研究用?

    • ベストアンサー
    • Java
  • Windows7のIEでJavaアプレットの設定

    いつもお世話になっております。 以下の環境でIEでJavaアプレットの設定をしたいのですが、カテゴリーとして出現しません。 アプレットは使用できるのですが、設定箇所を知りたいのです。 ご教授、よろしくお願いいたします。 ● OS: Windows7 ● ブラウザ: IE8、IE9 ● JRE: 6-update26 ● 手順: IEの「ツール」-「インターネットオプション」-「詳細設定」をひらく。 ※xpのIE8であれば、上記の「詳細設定」の画面にJava(Sun)というカテゴリーが出現しており、アプレットの使用を選択するチェックボックスがあります。Windows7だと同じ手順をふんでも出現しません・・・

  • JAVAアプレットの仕組みについて

    HTMLに埋め込まれたJAVAアプレットが画像を表示するように記述されている場合、JAVAアプレットは画像をサーバーからダウンロードして表示しているんですよね? JAVAアプレットがサーバーからファイルをダウンロードできるように、 JAVAアプレットがサーバー上にファイルを作り出すこともできるのですか? 今、計算プログラムをダウンロードで配布して、実行して得られた計算結果を投稿してもらう仕組みを作っているのですが、 JAVAアプレットにサーバー上のファイルを操作する能力があるのなら、JAVAアプレットを読み込み実行するだけで配布と投稿の作業が一まとめにできてしまうと思いました。 JAVAアプレットはサーバー上のファイルをどこまで操作できるのでしょうか?

    • ベストアンサー
    • Java
  • 勝手にアプレットが停止します

    アプレットが動作不良となる時があます。 アプレットの定周期(1秒、2秒など)の 更新描画にて、repaint()メソッドを呼び出していますが、 Javaからupdate()メソッドが呼び出されず、画面の 描画処理が行われていない状態となっていようです。 調べたところ、アプレットのrepaint()メソッド を呼び出すと、Javaからupdate()メソッドが 実行され、paint()メソッドに記述している 各描画処理が行われるはずですが、下記のように 実行されていないようです。 非常に困っていますので、どなたかご教授お願いします。    repaint()     ↓    update()  ←なぜかJavaから実行要求が来ない     ↓    paint()

    • ベストアンサー
    • Java
  • 自環境で作ったJAVA アプレットが動かないんです

    OSがXPのせいなのか??? 他の方がHP上で公開されているJAVAアプレットはIE上で動いてるのですが、いざ、サンプルソースをダウンし、自分のOS上でコンパイル後、IE で開いてみても グレーのボックスが現れるだけで何も表示されません。 しかし、appletviewer だと表示されます。 こちらのサイトの過去ログを拝見しながら、思い当たることはほとんど行ってみたと思うのですが、同様の現象に詰まった方はいらっしゃいませんか。

    • ベストアンサー
    • Java
  • アプレットに関して

    お世話になっております。 色々WEBをまわって調べてみたのですが どうにも情報を得られなかったので書き込みをさせて頂きました。 もしご存知の方がいらっしゃいましたらお願いします。 僕は今までDB系業務に携わっていたのですが 最近になりJava開発系に異動しました。 そしてJavaを触っているうちに個人でアプレットでも作ってみたいと 思ったのですがその中でいくつかの疑問がでてきました。 それは次のような点です。 ・アプレットをレンタルサーバーに設置して動作させる事ってできるのか? ・データ連携をやってみたい。そこで個人レベルだとMySQLなどとの連携を検討している。 ……が、はたしてこの連携できるのか?>DB→Java以外にもJavaから更新可能か?とか。 ・そういえばJSPでのDB連携はよく聞くがアプレットでの連携はまったく聞かない。 もしかして高度なのか?それともまったくできないものなのか? ・一般的なiアプリなどはよくサーバーと接続して更新情報を入手しているが あの技術に関する書籍などが発見できなかった。ああいうのって難しい??? まだまだJAVA覚えたてであまりよく解っていない部分も多いのですが…… もしご存知の方がいらっしゃいましたらお願いします。

    • ベストアンサー
    • Java
  • アプレットからサーバ側のプログラムを起動したいのですが…

    仕事でJavaを使うことになったのですが、プロジェクト員一同Java初心者で、必死にJavaを勉強していますが、以下のことで困っています。申し訳ありません。助けてください。 UNIXサーバ側の設定とかをいじるプログラムがあるのですが、それをアプレットにして、SEさんがリモートからでも操作出来るようにしろ、と言われました。 とりあえず、Javaアプレットからサーバ側(アプレットのクラスが置いてあるのと同じマシン)のCプログラムを起動し、その結果を受け取るようにしたいのですが、Java経験者に相談したら「アプレットにはセキュリティ上の問題があるのでCGIかServletを使わないと出来ない」と言われました。 では…とServletの勉強を初め、サーバー側にServletEngineをいれてみたのですが、 ServletはHTTPポートと違うポート(8000番とか)を開けてそこにアクセスしなくてはいけないようにみえます。それならクライアント側プログラムをアプレットにし、サーバ側プログラムとSocket通信で結び、サーバ側プログラムがCプログラムを起動、としたほうが楽そうですが、ひとつしかポートを開きたくないと言われたのです。 もしかして「アプレット+Servlet が アプレット+CGI相当」じゃなく「Servlet が アプレット+CGI相当」なのでServlet用のポートだけ開けとけばいいとかいうことでしょうか?  とか思っていたら、JNIでC言語のメソッドをJavaメソッド扱いするとかいう話も小耳に挟みました。それでできるのかしら? ・webポートだけを開いて ・サーバ側のCプログラムを起動してその結果を受け取る ・クライアントのマシンにあらかじめインストールしなくても、ブラウザからアクセスすると操作が対話的に出来るような ものを簡単に作ろうとしたら、一体何を勉強するべきなのでしょうか…。 Applet+CGI? Applet+Servlet? RMI? JNI…? 助けてください…(TT)

    • ベストアンサー
    • Java

専門家に質問してみよう