콘솔 응용프로그램을 만들 때 상황에 따라서 콘솔 창(Console Window)이 필요 없는 경우가 있습니다.
이런 경우 간단하게 창을 띄우지 않는 방법이 있습니다.
프로젝트 속성 > 응용 프로그램 > 출력 형식
에 보시면 콘솔 프로젝트의 경우 '콘솔 응용 프로그램'으로 설정되어 있습니다.
이것을 'Windows 응용 프로그램'으로 바꿔주면 명령 프롬프트 창이 띄지 않습니다.
단순히 콘솔 창만 가리고 싶다면 이 방법이 최고죠 ㅎㅎㅎ
하지만 비하인드 코드에서 아무런 제어를 할 수 없다는 단점이 있습니다.
조금 번거롭더라도 'WinAPI'를 이용하면 코드에서 컨트롤이 가능합니다.
아래와 같이 'WinAPI'를 마샬링 해주고
[DllImport("kernel32.dll")]
static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
const int SW_HIDE = 0;
const int SW_SHOW = 5;
아래와 같이 콘솔을 표시/가리기를 할 수 있습니다.
//대상 윈도우 핸들 받기
var handle = GetConsoleWindow();
//콘솔 가리기
ShowWindow(handle, SW_HIDE);
//콘솔 표시
ShowWindow(handle, SW_SHOW);
참고 : stackoverflow - Show/Hide the console window of a C# console application - Timwi님 답변
리눅스에서는 다른 방법을 써야겠죠?