C# 외부 프로그램 (프로세스) 실행하기 (Process Start)

C# 외부 프로그램 (프로세스) 실행하기 (Process Start)


외부 프로그램(다른 프로세스)을 실행할 땐 2개의 클래스 객체가 필요합니다.


1. ProcessStartInfo

2. Process


1번은 클래스 이름 그대로 프로그램의 실행 정보를 보유합니다.

2번은 1번을 실행하거나 종료하는 데 사용이 됩니다. 그래서 두 클래스 객체를 함께 사용하여 외부 프로그램을 실행할 수 있습니다.


C# 외부 프로그램 (프로세스) 실행하기 (Process Start)[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)

댓글(2)

  • 2018.11.07 14:39 신고

    안녕하세요..
    혹시 notepad가 켜져잇거나 인터넷이 켜져 있는경우 프로세스를 죽일 수 있나요 ??

    답변 꼭좀해주세요 ㅜㅜ

    • 2018.11.08 22:02 신고

      당연히 됩니다.

      Process[] is_run = Process.GetProcessesByName("File Name";);

      여기에 프로그램 이름을 넣으셔도 돼요.

Designed by JB FACTORY