投稿日 | : 2005/11/14(Mon) 17:31 |
投稿者 | : 琴 |
Eメール | : |
URL | : |
タイトル | : Re^2: 起動したアプリが起動させたプログラムの終了を感知する方法 |
回答ありがとうございます。
> 前提条件:
> 1.Bはシステムでは同時に一個しか動かない。
> 2.Bのキャプションは固定である(または決定できる)
>
前提条件2はOKとして1に関しては100%ありえないとは言えないまでも
ユーザがそう意図しない限り複数起動することはないはずですので
大丈夫だと思います。
ご指摘の方法でBの終了を感知できました。ありがとうございます。
Dim INST As Long
Dim PROCESS As Long
Dim Ret As Long
Dim ENDWORK As Long
' Aの起動
INST = Shell("Aのフルパス名", 1)
' Aのプロセスハンドルを取得する
PROCESS = OpenProcess(1024 Or 1048576, True, INST)
' Aの終了を監視
Do
Ret = GetExitCodeProcess(PROCESS, ENDWORK)
DoEvents
Loop While ENDWORK = 259
' Bが表示されるまでのタイムラグを回避
Call Sleep(1000000)
' Bの終了を監視
Do
If FindWindowA(vbNullString, "Bのキャプション") = 0 Then
Exit Do
End If
DoEvents
Loop
MsgBox "B終了!"
' 以下チェック処理へ