プロが教えるわが家の防犯対策術!

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

A 回答 (5件)

 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)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/10/05 10:02

> mysleep.vbsは一行だけになりますか?



はい。Windows には一定時間眠るコマンドが無いので、作りました。指定したミリ秒眠ります。サンプルでは 1 秒眠るようにしましたが、適当に調整してください。
    • good
    • 0

>私が実現したのは、内部的に特定のPGが実行されるとき自動的に画面解像度切替PGを走らせたかったのです。


>但し特定のプログラムはユーザーが操作するのではなく、他の管理PGに呼ばれて実行しているようなのです。

これをつかえばいいんじゃないかな。
http://www.vector.co.jp/soft/win95/util/se316489 …
ただし、exeファイルを書き換えます。#2さんの書いている方式ですね。
batだったら自分で解像度変更処理をそのbatファイルに書き加えればいい。

>それが何が不明だったので、実行中のプロセスを外側から監視して切替られないかと考えた次第です。

やりたいことをストレートに書いたほうがいいです。

この回答への補足

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

補足日時:2005/10/05 23:24
    • good
    • 0

特定のプログラム: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では無理かもしれません

この回答への補足

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

補足日時:2005/10/05 10:03
    • good
    • 0

OSくらいかかないと、まともな回答は期待できません。


また任意のコマンドはどういう実行形式なのでしょう?
シェル?バッチ?exe?(これもOS次第でしょうけど)

プロセスの監視は無駄な処理のような気もします。
定期的にチェッカーを走らせて、ヒットしたときに
なにかプログラムを実行する方が効率的ですね。
もちろん一瞬しか実行されないプログラムを
追っかけたいというなら、それはそれで
多少の効率性を捨ててでも、常時監視をした方が
いいのでしょうけど。

この回答への補足

>OSくらいかかないと
ごもっともな意見です。
OSはWindows Xp Pro SP2です。
同じ事を2000PROでも行いたいと考えています。

>また任意のコマンドはどういう実行形式なのでしょう?
>シェル?バッチ?exe?(これもOS次第でしょうけど)
ここで指すのはexeを実行したいのですが、状況によってはbatもあり得ます。
要は解像度切替ソフト(フリーウェア)を実行したいのですけどね。

>定期的にチェッカーを走らせて、ヒットしたときに
>なにかプログラムを実行する方が効率的ですね。
確かに言われてみれば常時監視するというよりも定期的にチェッカーを走らせるという手もあるかもしれません。

私が実現したのは、内部的に特定のPGが実行されるとき自動的に画面解像度切替PGを走らせたかったのです。
但し特定のプログラムはユーザーが操作するのではなく、他の管理PGに呼ばれて実行しているようなのです。
それが何が不明だったので、実行中のプロセスを外側から監視して切替られないかと考えた次第です。

補足日時:2005/10/03 16:36
    • good
    • 0

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