Command1でメモ帳を起動し、その時のタスクIDを使用してプロセスハンドルを取得しています。この時、第二引数を”1”にしてプロセスハンドルを継承しています。Command2でこのプロセスハンドルを使用して終了状態を判定しています。
DimhProcessAs Long
Private SubCommand1_Click()
DimlretAs Long
lret = Shell("c:\windows\notepad.exe", vbNormalFocus)
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, lret)
End Sub
Private SubCommand2_Click()
DimlExitCodeAs Long
DimlretAs Long
lret = GetExitCodeProcess(hProcess, lExitCode)
IflExitCode = STILL_ACTIVEThen
MsgBox "起動されています"
Else
lret = CloseHandle(hProcess)
MsgBox "起動されていません"
End If
End Sub
'---------------------------------------------------------------
'
'---------------------------------------------------------------
Declare FunctionOpenProcessLib"kernel32" (ByValdwDesiredAccessAs Long,ByValbInheritHandleAs Long,ByValdwProcessIdAs Long)As Long
Declare FunctionGetExitCodeProcessLib"kernel32" (ByValhProcessAs Long, lpExitCodeAs Long)As Long
Declare FunctionCloseHandleLib"kernel32" (ByValhObjectAs Long)As Long
'
Public ConstPROCESS_QUERY_INFORMATION = &H400&
Public ConstSTILL_ACTIVE = &H103&
DownLoad vbtips052.lzh 2KB (VB6.0)