[C#] 콘솔 프로그램 백그라운드(창 없이) 실행 방법

일반적으로 C#에서 외부 프로그램(.exe 등)을 실행시킬 때 Process를 많이 사용합니다.

콘솔(Console; 도스 커맨드 창)로 실행되는 프로그램을 실행하는 경우 콘솔 창이 화면에 나타나서 UI 상으로 불편한 경우가 있습니다.

Process로 콘솔 창을 띄우는 외부 프로그램을 실행 시 콘솔 창을 백그라운드로 실행해 안보이도록 하려면 아래와 같이 합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Diagnostics;

namespace Test.Utils
{
public class Program
{
public static void Main(string[] args)
{
string arg = "...";

Process process = new Process();
process.StartInfo.FileName = @".\ffmpeg.exe";
process.StartInfo.Arguments = arg;

process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; // 윈도우 속성을 windows hidden 으로 지정
process.StartInfo.CreateNoWindow = true; // hidden 을 시키기 위해서 이 속성도 true 로 체크해야 함

process.Start();
process.WaitForExit(); // 종료시까지 대기
}
}
}

추가로 외부 프로그램에서 출력한 값을 읽어와서 출력하는 방법은 아래와 같습니다.

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
using System;
using System.Diagnostics;

namespace Test.Utils
{
public class Program
{
public static void Main(string[] args)
{
string arg = "...";

Process process = new Process();
process.StartInfo.FileName = @".\ffmpeg.exe";
process.StartInfo.Arguments = arg;

process.StartInfo.UseShellExecute = false; // 스트림을 읽는데 필요
process.StartInfo.CreateNoWindow = false;
process.StartInfo.RedirectStandardOutput = true; // 실행한 프로그램의 출력을 얻는다.

process.Start();
process.WaitForExit(); // 종료시까지 대기

string result = process.StandardOutput.ReadToEnd(); // 실행한 프로그램의 출력을 읽는다.

Console.WriteLine("result => " + result);
}
}
}
Share