티스토리 뷰

목차

    반응형

    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)

    반응형