- ベストアンサー
VBSでアプリケーションを操作する方法
- VBS(WSH?)を使ってアプリケーションを操作したい場合、マウスマクロソフトを使用する代わりにウインドウがアクティブ状態でなくてもコマンドを実行させる方法を教えてください。
- マーケットスピードだけではなくIEやその他のメーラーなども操作したい場合、イベントを監視してWSHのコマンドを見つけ出す方法などを教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ANo.1の補足へのアドバイスです。 質問後半の意図はわかりました。命令を調べて、それらをWSHで実行してやれば、アプリケーション毎に確実に操作できるとお考えですね? しかしそれはアプリケーションを操作する考え方として正しいですけれども、残念ながらWSHのWshShellの機能ではできません。 ご存知かもしれませんが、アプリケーションが操作されるとWindowsは操作されたアプリケーションに対して「メッセージ」を送ります。アプリケーションはメッセージを受け取って対応する処理を行います。例えばメモ帳でメニューが選択されるとWM_COMMANDというメッセージ(選択されたメニューの情報を含む)がメモ帳プログラムに送られ、メモ帳プログラムは情報を見て処理を行います。 アプリケーションにメッセージが送られる様子はメッセージキャプチャプログラムで観察できます。私が使っているのはBorland Delphiに付いてきたWinSightですが、MSでしたら開発ソフトに付いてくるspyでしょうか(?)。これを解析して同様にメッセージを送ってやればアプリケーションを操作できます。 しかしWshShellにはメッセージを送る手段はなく、たかだかキーストロークを送ることしかできません。更に言えばアプリケーションを指定してキーを送れる訳ではなく、AppActivateを使ったとしても、たまたまそのときアクティブなアプリケーションに送ることしかできません。 メッセージを送るプログラムを自作すれば確実に操作できますが、実用上は「静かな状態」で使うか、あるいはSendKeysの直前にAppActivateを実行するようにすればよいのではないでしょうか。 ----- 話は変わり、アプリケーションによってはキーを送るのではなく、WSHのCreateObjectメソッドでオブジェクトを作成して操作できるものがあります。例えばMS OfficeはVBAと同様の操作をWSHから行えます。目的に合えばこちらの方法を使うと確実です。IEも可能でMSDNに下記の資料があります。 InternetExplorer Object http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reference/objects/internetexplorer.asp
その他の回答 (1)
- SHIMAPEE
- ベストアンサー率75% (154/203)
楽天のマーケットスピード及びマウスマクロソフトについてはわからないのですが質問前半にお答えします。 WSHでアプリケーションのウインドウをアクティブにするためにはWshShellオブジェクトのAppActivateメソッドを使います。しかしその時点でアクティブ化に成功したとしても別のアプリケーションがアクティブになる可能性はあり、続く操作が必ず目的のアプリケーションに対して行われるかは保証されません。 私はAppActivateに続けてSendKeysメソッドでネットワークのログイン操作などを行っています。「静かな状態」で起動しており、だいたいうまくいっています。 SendKeysの直前に常にAppActivateを実行するような関数を自作して使えば、誤操作の可能性は減るかもしれません。 質問後半の「WSHのコマンドを見つけ出す方法など」についてはhiro245さんの意図が読み取れませんのでよろしければ補足をお願いします。なお、IEやその他メーラー等の操作のことでしたら、AppActivateとSendKeysの機能の範囲(キー操作の範囲)内で同様に可能です。
補足
ご回答ありがとうございます。 現在もAppActivateメソッドを利用しております。 全てのコードを書くと逆にわかりにくいかと考え、省略してしまいました。 説明不足で申し訳ございません。 なので失敗は稀なのです。ですが今はその「稀」を修正したいと考えております。 「WSHのコマンドを見つけ出す方法」についてですが、 例えばシステムがアプリケーションに命令を出すとき システム側からアプリケーションに対して何らかのVBSのようなコマンドみたいなものを実行しているのだと考えているんです。 そこで、それをDOSプロンプトか何かで確認しながら マウスでログインボタン等を押したりすると DOSプロンプトに命令コマンドみたいなものがズラズラっと 吐き出されるのではないかと勝手に想像しています。 (イメージとしてはパケットキャプチャみたいな感じです。) 記憶が曖昧ですが以前そのようなことをどこかのHPで読んだ気がします。 よろしくお願いいたします。
お礼
WSHでは無理なのですね。 そしてVBでは可能なのですね。 更にメッセージキャプチャに関する情報もありがとうございます。 道のりは険しそうですがなんとか作ってみようと思います。 ありがとうございましたm(__)m