|
多分API使わないと無理ではないかと・・・
下のコードは、Shell関数の終了するまで待機させるものです。
GetExitCodeProcessでそのアプリケーションが終了しているか確認し、
終了していない場合、DoEvents関数でそのアプリケーションへ
CPU処理を戻してやっているものです。
強制終了もAPI使えば出来ますので、検索してみてください。
参考になるかと・・・
'API定義
Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Public Const PROCESS_QUERY_INFORMATION = &H400&
Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, _
lpExitCode As Long) As Long
Public Const STATUS_PENDING = &H103&
Public Const STILL_ACTIVE = STATUS_PENDING
Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long
'-------------------------------------------------------------------------
'[Shell関数が終了するまで待機]
'
'プロシジャー名 S_WaitProcess
'引数 lngProcessID Shell関数の戻り値(プロセスID)
'-------------------------------------------------------------------------
Sub S_WaitProcess(lngProcessID As Long)
Dim lngProcess As Long
Dim lngExitCode As Long
Dim rc As Long
'プロセスIDからハンドルを取得
lngProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, lngProcessID)
Do
'終了しているか確認
rc = GetExitCodeProcess(lngProcess, lngExitCode)
DoEvents '処理を戻す
Loop While lngExitCode = STILL_ACTIVE '終了するまでループ
rc = CloseHandle(lngProcess) '後始末
End Sub
|
|