티스토리 뷰
목차
반응형
C# 외부 프로그램 (프로세스) 실행하기 (Process Start)
외부 프로그램(다른 프로세스)을 실행할 땐 2개의 클래스 객체가 필요합니다.
1. ProcessStartInfo
2. Process
1번은 클래스 이름 그대로 프로그램의 실행 정보를 보유합니다.
2번은 1번을 실행하거나 종료하는 데 사용이 됩니다. 그래서 두 클래스 객체를 함께 사용하여 외부 프로그램을 실행할 수 있습니다.
[C# 다른 프로세스 실행]
아래는 C#으로 외부 프로세스 실행하는 예제 소스입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | ProcessStartInfo psi = new ProcessStartInfo(); Process process_ = new Process(); psi.FileName = "File Name"; psi.RedirectStandardOutput = true; psi.UseShellExecute = false; process_.StartInfo = psi; process_.EnableRaisingEvents = true; // 프로세스가 끝나는 이벤트가 발생할 때 실행할 핸들러 지정 process_.Exited += (sender, e) => { MessageBox.Show("프로그램이 종료되었습니다. 확인해 주세요."); }; Process[] is_run = Process.GetProcessesByName("File Name"); IntPtr handle = IntPtr.Zero; if (is_run.Count() == 0) { process_.Start(); handle = process_.Handle; } process_.Close(); process_.Dispose(); | cs |
4번 라인에 파일 이름을 적습니다. 만약 메모장을 실행시키려면 notepad.exe가 되고, test_exam.exe란 파일을 실행하려면 test_exam.exe를 적습니다.
8번 라인은 Process 클래스 객체가 제어할 프로그램 정보입니다. 위에서 이미 정의되었죠.
12~15번 라인은 Process에 주는 이벤트입니다. 외부 프로세스가 종료된다면 이 이벤트를 통해 종료 여부를 알 수 있습니다.
17번 라인에서 기존에 동작하는 프로그램이 있는지 먼저 확인합니다.
21번 라인처럼 실행되던 프로그램이 없으면 Start 함수를 호출해 외부 프로세스를 실행합니다. 그리고 핸들도 얻어오는데 쓸 일이 없으면 생략해도 됩니다.
27~28번 라인은 소멸자에 넣어주세요. 먼저 프로그램을 닫고 메모리 해제하는 코드입니다.
C#에서 외부 프로그램, 프로세스 실행하는 것이 이렇게나 쉽습니다. 즐프하세요~
C# 외부 프로그램 (프로세스) 실행하기 (Process Start)
반응형