본문 바로가기
Excel&VBA

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

by 센텀Dev 2019. 3. 6.

 

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