いつもありがとうございます.
先日質問させていただき、下記のプロシージャを組みました.
API参照
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" _
(ByVal hProcess As Long, _
lpExitCode As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" _
(ByVal hObject As Long) As Long
Const PROCESS_QUERY_INFOMATION = &H400&
Const STILL_ACTIVE = &H103&
--------------------------------------------------------------------------------------------
'プロシージャ内
Dim lngTaskID As Long
Dim lngProcHandle As Long
Dim lngExitCode As Long
Dim lngReturnCode2 As Long
Me.Enabled = False
lngTaskID = Shell("AAA", vbNormalFocus)
'実はここでAAAのプログラムがBBBのプログラムを起動しています。
'このBBBのプログラムの終了を検知したいのですが・・・
'Shellではなく、プロセスを監視するような命令はありますか?
lngProcHandle = OpenProcess(PROCESS_QUERY_INFOMATION, 1, lngTaskID)
Do
lngReturnCode2 = GetExitCodeProcess(lngProcHandle, lngExitCode)
DoEvents
Loop While lngExitCode = STILL_ACTIVE
CloseHandle lngProcHandle
よろしくお願いします.
ちなみに、BBBのプログラムが立ち上がったときタスクマネージャには表示されています.
質問することを整理したほうがいいかと
意味がわかりません
>'Shellではなく、プロセスを監視
??
でその後の
> lngProcHandle = OpenProcess(PROCESS_QUERY_INFOMATION, 1, lngTaskID)
> Do
> lngReturnCode2 = GetExitCodeProcess(lngProcHandle, lngExitCode)
> DoEvents
> Loop While lngExitCode = STILL_ACTIVE
>
> CloseHandle lngProcHandle
??
何がいいたいの?
案1:AAAを改造 (BBBが終了するまで待ってから終了する)
案2:BBBを直接起動
案3:http://www.galliver.co.jp/writing/msdn/msdn15/
案4:WMI のWin32_Process
案5:BBB終了時にAAAに終了の旨をセンドメッセージさせる
ツイート | ![]() |