VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 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終了!"

' 以下チェック処理へ


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -