'******************************************************************************
'* 関数名:プロセス終了待機(WaitProcessEnd)
'* 引 数:コマンドライン(ByVal w_cmdline As String)
'* 起動スタイル(ByVal w_style As VbAppWinStyle)
'* ロックするフォーム(w_form As Object)
'* 機 能:アプリケーションを起動し終了するまで待機する
'******************************************************************************
Public Sub WaitProcessEnd(ByVal w_cmdline As String, ByVal w_style As _
VbAppWinStyle, w_form As Object)
Dim w_lret As Long ' 呼出アプリケーション終了判定
Dim w_processid As Double ' 呼出アプリケーションタスク
Dim hHandle As Long ' 呼出アプリケーションハンドル
' コマンドラインのアプリケーションを起動する
w_processid = Shell(w_cmdline, w_style)
' フォームをロックする
w_form.Enabled = False
' 起動したアプリケーションのハンドルを取得する
hHandle = OpenProcess(&H100000, False, w_processid)
' ループを開始する
Do
' 指定したアプリケーションの終了または0.1秒経過するまで待機
w_lret = WaitForSingleObject(hHandle, 100)
' 指定したアプリケーションが終了している場合ループを抜ける
If w_lret = 0 Then Exit Do
' OSに制御を戻す
DoEvents
' ループを終了する
Loop
' ハンドルを閉じる
w_lret = CloseHandle(hHandle)
' フォームのロックを解除する
w_form.Enabled = True
' フォームに制御を戻す
w_form.SetFocus
End Sub
|