- - PR -
外部からのSwingコンポーネント操作
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-05-26 23:25
Swingアプリケーションに対して外部プログラムから
ボタン押下させることは可能でしょうか? フォーカスオンの状態にてSendKey(スペース)にて処理可能で あることは分かったのですが、押下タイミングが難しいため 直接ボタン押下のメッセージを投げられればと考えています。 実現方法ご存知な方、ご教授願います。 | ||||||||
|
投稿日時: 2006-05-29 13:07
kazaaaさん、こんにちは。
ボタンを押させてプロセス間通信というのは あまりスマートな感じがしません。 「環境に依存してもいいから!」という条件 付きというなら、私は Xプロトコルのパケット を送信します。 | ||||||||
|
投稿日時: 2006-05-29 16:28
ご回答ありがとうございます。
外部プロセスからのアクセスですのでNative依存は すでに許容済みです。 現在Windows上を想定しているのでWin32APIを直接叩けば いけると思っていたのですですが、SwingのGUI管理が 特殊(Winアプリとは管理体系が違う)なため そもそも、上記機能は実現できるのか?と思って質問させて 頂きました。 WindowsのSwingに対しするWindowメッセージの一覧とか があればもう少しわかりやすいのですが。。。 まだ、Swingのソースを読んでいないので、まずそちらから 調査してみます。 | ||||||||
|
投稿日時: 2006-05-29 17:30
めちゃくちゃ泥臭い方法。
Component#getLocationOnScreen()とかJComponent#getLocation()とか駆使してそのボタン(コンポーネント)の画面内座標を割り出して(移動していたり、サイズ変更されていたらどうしよう ?)、 その座標に向かってマウスクリックイベントを発生させる。 # Robotでできるのかな ? 試してないですけど。 | ||||||||
|
投稿日時: 2006-05-29 18:02
対象となる「Swingアプリケーション」は、作り直せない(プログラムを改変できない)ものでしょうか?作り直せるものならば、ボタンに拘らなくてもいろいろ方法はあると思いますが、作り直せないものだったら、なまじ Swing なので外部からの制御は難しいですね。 AWT ならばそのボタン(Button クラス)は Windows から見てもウィンドウハンドルを持ったボタンであるので、制御は比較的容易です。一方 Swing のボタン(JButton)は、Windows から見たらただのハリボテですので、制御は難しいでしょう。 たとえば Spy++ などのツールでウィンドウの構造を調べられると分かると思います。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2006-05-29 21:38
ちょうど、Windows用のUWSCというGUI自動操作ツールを調べていました。
このツールはJavaのGUIアプリの操作に "Java Access Bridge"を使っているようです。 http://jp.sun.com/company/aboutsun/access/accessbridge.html 私自身もつい先日に知ったばかりで使ったことがありません。 うまくいったら教えてくださいね。 | ||||||||
|
投稿日時: 2006-05-29 22:05
現在稼動しているアプリケーションなため何かしら仕組みを突っ込むことは できません。。。
私もAWTなら実現できると考えていたのですが、SwingはWindowsから見れば唯の 空フレームでしかないため扱いに困ってしまいました。 そもそも内部コントロールにハンドル割り当てていませんし。 #びしばし様の仰る通り、Rational Robotでは実現されているのかな〜? 私も話に聞いたぐらいで使ったことないので何とも言えません。 #ちょっと面白い記事発見! http://www.javaworld.com/javaworld/jw-11-2004/jw-1115-swing.html Swingアプリをインプロセス(同JavaVM)で起動すればさすがに行けるみたい。 うまくインスタンス化できれば、現アプリに手を加えなくても実現可能かも。 普通Swingアプリってこうやってテストするのかな? | ||||||||
|
投稿日時: 2006-05-29 22:09
おお!ちょっとそそるタイトルですね! 早速ためしてみます。結果はここで報告させて頂きます! |
1