• ベストアンサー

実行中のプロセス監視して任意のプログラムを実行したい

常時プロセスを監視し、特定のプログラムが実行されたら別の任意のプログラム(またはコマンド)を自動的に実行するという方法はありますでしょうか? こういった事がフリーウェアであったら嬉しいのですが…

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

  • ベストアンサー
回答No.3

 XP pro なら tasklist コマンドが使えますね(2000 pro は手元に無いので確認できません)。以下のようなバッチと VBS を組んでみました。参考にしてください。 ----- watch.bat ----- @echo off if "%1" == "" (echo Usage: %0 imagename & exit /b 1) :loop for /f "tokens=1" %%A in ('tasklist /nh /fi "IMAGENAME eq %1" 2^> nul') do ( if "%%A" == "%1" ( echo %%A is launched &rem この行を起動するコマンドに置き換える goto end ) ) echo Waiting for %1 cscript "%HOMEPATH%\bin\mysleep.vbs" 1000 &rem mysleep.vbs のパスは要変更 goto loop :end exit /b 0 ----- mysleep.vbs ----- WScript.Sleep WScript.Arguments(0)

noname#26735
質問者

お礼

わざわざお考え下さり有難うございます。 mysleep.vbsは一行だけになりますか?

その他の回答 (4)

回答No.5

> mysleep.vbsは一行だけになりますか? はい。Windows には一定時間眠るコマンドが無いので、作りました。指定したミリ秒眠ります。サンプルでは 1 秒眠るようにしましたが、適当に調整してください。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

>私が実現したのは、内部的に特定のPGが実行されるとき自動的に画面解像度切替PGを走らせたかったのです。 >但し特定のプログラムはユーザーが操作するのではなく、他の管理PGに呼ばれて実行しているようなのです。 これをつかえばいいんじゃないかな。 http://www.vector.co.jp/soft/win95/util/se316489.html?g ただし、exeファイルを書き換えます。#2さんの書いている方式ですね。 batだったら自分で解像度変更処理をそのbatファイルに書き加えればいい。 >それが何が不明だったので、実行中のプロセスを外側から監視して切替られないかと考えた次第です。 やりたいことをストレートに書いたほうがいいです。

noname#26735
質問者

補足

質問をする前に御紹介のありましたソフトを試しましたが、何らかのタイミングで実行前の解像度に戻ってしまったのです。 確かこのソフトは呼び出すプログラムのプロセスを見てて、終了すると同時に解像度も元に戻すといった仕様だったかと思いますので、メインとなるプログラムから幾つかのサブを呼ぶようになっていると仮定し、そのうちの一つのサブが実行されるときだけ解像度を変えたいとなると、今回私が質問したように常にプロセスを見ていて解像度変更するタイミングを待機しなければいけないと考えました。 元のプログラムを変えられたら良いのですが、ブラックボックスになっているので外から監視するしか無いと判断したのです。

回答No.2

特定のプログラム:a.exe 質問者さんが実行したい任意のプログラム:b.exe とすれば、 (1) a.exeをリネームしてa_a.exeとかする (2) VisualBasicとかで、a.exeというソフトを作る。このソフトの中身は、「もらった引数を全てa_a.exeに渡して実行する」かつ「b.exeを起動する」というただのランチャー。 (3) a.exeを、本物のa.exeがあった場所に設置。 で、動く*かも*しれませんね。 まぁUNIX的発想なのでWindowsでは無理かもしれません

noname#26735
質問者

補足

確かにそのような仕様でなら動くかもしれません。 でも私はVBはできませんので。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

OSくらいかかないと、まともな回答は期待できません。 また任意のコマンドはどういう実行形式なのでしょう? シェル?バッチ?exe?(これもOS次第でしょうけど) プロセスの監視は無駄な処理のような気もします。 定期的にチェッカーを走らせて、ヒットしたときに なにかプログラムを実行する方が効率的ですね。 もちろん一瞬しか実行されないプログラムを 追っかけたいというなら、それはそれで 多少の効率性を捨ててでも、常時監視をした方が いいのでしょうけど。

noname#26735
質問者

補足

>OSくらいかかないと ごもっともな意見です。 OSはWindows Xp Pro SP2です。 同じ事を2000PROでも行いたいと考えています。 >また任意のコマンドはどういう実行形式なのでしょう? >シェル?バッチ?exe?(これもOS次第でしょうけど) ここで指すのはexeを実行したいのですが、状況によってはbatもあり得ます。 要は解像度切替ソフト(フリーウェア)を実行したいのですけどね。 >定期的にチェッカーを走らせて、ヒットしたときに >なにかプログラムを実行する方が効率的ですね。 確かに言われてみれば常時監視するというよりも定期的にチェッカーを走らせるという手もあるかもしれません。 私が実現したのは、内部的に特定のPGが実行されるとき自動的に画面解像度切替PGを走らせたかったのです。 但し特定のプログラムはユーザーが操作するのではなく、他の管理PGに呼ばれて実行しているようなのです。 それが何が不明だったので、実行中のプロセスを外側から監視して切替られないかと考えた次第です。

関連するQ&A