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
'Excel&VBA' 카테고리의 다른 글
VBA) 파일 리스트 추출하기 (0) | 2021.10.19 |
---|---|
[VBA] 폴더 선택하기 (0) | 2018.02.06 |
[VBA] 파일 다중 선택하기 (0) | 2018.02.06 |
엑셀 다중창 사용 (0) | 2013.11.04 |
[VBA] CLOB 형식으로 저장하기 (0) | 2013.08.06 |