プロが教える店舗&オフィスのセキュリティ対策術

現在は以下のように楽天のマーケットスピードを起動させて
マウスマクロソフトでログインしていますが
WSHが動いている最中に別のアプリケーションが自動起動するようなことがあると
ログインに失敗します。

ですのでマウスマクロソフトを使用するのではなくて
該当アプリケーションのウインドウがアクティブ状態でなくても
コマンドを実行させる方法をおしえていただきたいです。

マーケットスピードだけではなくIEやその他メーラー等も操作したいので
イベント(ログ?コマンド?)を監視するなどして
WSHのコマンドを見つけ出す方法などを教えていただきたいです。

よろしくお願いいたします。


●●●現在のVBSの内容●●●●
'マケスピを立ち上げる。
WSHShell.Run """D:\Program Files\MarketSpeed\MarketSpeed\MarketSpeed.exe"""
WScript.Sleep 5000 '5秒ウェイトを入れ起動を待つ。

'この後マウスマクロソフトの起動
'マウスマクロソフトでログイン動作
●●●●●ここまで●●●●●

A 回答 (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?ur …
    • good
    • 0
この回答へのお礼

WSHでは無理なのですね。
そしてVBでは可能なのですね。
更にメッセージキャプチャに関する情報もありがとうございます。
道のりは険しそうですがなんとか作ってみようと思います。

ありがとうございましたm(__)m

お礼日時:2007/01/08 14:48

楽天のマーケットスピード及びマウスマクロソフトについてはわからないのですが質問前半にお答えします。



WSHでアプリケーションのウインドウをアクティブにするためにはWshShellオブジェクトのAppActivateメソッドを使います。しかしその時点でアクティブ化に成功したとしても別のアプリケーションがアクティブになる可能性はあり、続く操作が必ず目的のアプリケーションに対して行われるかは保証されません。

私はAppActivateに続けてSendKeysメソッドでネットワークのログイン操作などを行っています。「静かな状態」で起動しており、だいたいうまくいっています。

SendKeysの直前に常にAppActivateを実行するような関数を自作して使えば、誤操作の可能性は減るかもしれません。

質問後半の「WSHのコマンドを見つけ出す方法など」についてはhiro245さんの意図が読み取れませんのでよろしければ補足をお願いします。なお、IEやその他メーラー等の操作のことでしたら、AppActivateとSendKeysの機能の範囲(キー操作の範囲)内で同様に可能です。

この回答への補足

ご回答ありがとうございます。

現在もAppActivateメソッドを利用しております。
全てのコードを書くと逆にわかりにくいかと考え、省略してしまいました。
説明不足で申し訳ございません。
なので失敗は稀なのです。ですが今はその「稀」を修正したいと考えております。

「WSHのコマンドを見つけ出す方法」についてですが、
例えばシステムがアプリケーションに命令を出すとき
システム側からアプリケーションに対して何らかのVBSのようなコマンドみたいなものを実行しているのだと考えているんです。
そこで、それをDOSプロンプトか何かで確認しながら
マウスでログインボタン等を押したりすると
DOSプロンプトに命令コマンドみたいなものがズラズラっと
吐き出されるのではないかと勝手に想像しています。
(イメージとしてはパケットキャプチャみたいな感じです。)
記憶が曖昧ですが以前そのようなことをどこかのHPで読んだ気がします。

よろしくお願いいたします。

補足日時:2007/01/07 22:37
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!