Category

마메의여행기 (252)
사진 (84)
여행 (11)
등산 (30)
정보 (91)
개발 (36)

Search

Blog Menu

[VB6] Shell로 실행파일 실행후 끝날때까지 대기

' 버튼을 클릭하면 메모장을 실행시키고, 메모장이 종료되면 계산기를 실행시키는 소스

Option Explicit 

'메인 프로세스 오브젝트 핸들링
Private Declare Function OpenProcess Lib "kernel32" _
    (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
     ByVal dwProcessId As Long) As Long
'지정한 프로세스 오브젝트 핸들링
Private Declare Function GetExitCodeProcess Lib "kernel32" _
    (ByVal hProcess As Long, lpExitCode As Long) As Long
'열러있는 프로세스 오브젝트 핸들링 해제
Private Declare Function CloseHandle Lib "kernel32" _
    (ByVal hObject As Long) As Long
Private Const PROCESS_QUERY_INFORMATION = &H400&
Private Const STILL_ACTIVE = &H103&

Private Sub ShellEnd(ProcessID As Long)
    Dim hProcess As Long
    Dim EndCode As Long
    Dim EndRet   As Long
    '핸들을 가져옴
     hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 1, ProcessID)
    '종료할 때까지 대기
    Do
        EndRet = GetExitCodeProcess(hProcess, EndCode)
        DoEvents
    Loop While (EndCode = STILL_ACTIVE)
    '핸들을 닫음
     EndRet = CloseHandle(hProcess)
End Sub

Private Sub Command1_Click()
'메모장을 실행하고, 종료되면 계산기를 실행
    Dim Ret1 As Long
    Dim Ret2 As Long
    Ret1 = Shell("C:\windows\system32\notepad.exe", 1)
    ShellEnd (Ret1)        '종료할때까지 대기
    Ret2 = Shell("C:\windows\system32\CALC.EXE", 1)
    ShellEnd (Ret2)        '종료할때까지 대기
End Sub

 

테스트용 카운트 실행파일 첨부(10초동안 실행됨)