Shell関数のタスクIDについて

解決


ZORO  URL  2001-05-22 04:24:14  No: 74350  IP: [192.*.*.*]

お世話になります。
Shell関数で外部プログラムを実行した際に、タスクIDが取得できますが、この値を用いてそのタスクが実行中かどうか判定するには、どうすればいいのか教えてください。
具体的に説明しますと、
1.VBからShell関数を使ってあるEXEを起動する。
2.VBのプログラムが終了する際に、起動させたEXEが実行中かどうか判定する。
3.実行中の場合はそのEXEを終了させるようなメッセージを表示する。
なお、FindWindowも考えたのですが、実行させるEXEのタイトルバーの名称が変わるため取得できません。代わりのAPIなどがあれば助かるのですが・・・。
宜しくお願いいたします。

編集    削除
PAPY  2001-05-22 19:24:59  No: 74351  IP: [192.*.*.*]

OpenProcess、GetExitCodeProcess()などのプロセス系のAPIを使えば出来ると思います。以下のサンプルを参考にして下さい。

http://madia.world.coocan.jp/API/Process.LZH

編集    削除
ZORO  URL  2001-05-23 20:45:23  No: 74352  IP: [192.*.*.*]

PAPYさん、いつも有り難うございます。
MSサイトにも情報がありました。
http://www.microsoft.com/japan/support/kb/articles/J027/6/82.htm
解決できそうです。

編集    削除
しん  2003-12-02 02:24:03  No: 74353  IP: [192.*.*.*]

お世話になります。
Shell関数で外部プログラムを実行したとき、外部プログラムが終了するまで
他のプログラムに制御が移らないようにしたいのですが、どのようにすればよいでしょうか。

今やろうとしている方法は
1.VBからShell関数を使ってあるEXEを起動する。
2.OpenProcessでハンドルを開く。
3.WaitForSingleObjectで外部プログラムの終了を待つ。

見当違いのことをやっているような気もするのですが・・・
以上よろしくお願いします。

編集    削除
oku  URL  2003-12-02 09:08:00  No: 74354  IP: [192.*.*.*]

PAPYさんが書かれてるようにGetExitCodeProcess()を使ってください。
確かここのAPI技術関連にサンプルが。

編集    削除