2015. 1. 26. 15:00

콘솔 응용프로그램을 만들 때 상황에 따라서 콘솔 창(Console Window)이 필요 없는 경우가 있습니다.

이런 경우 간단하게 창을 띄우지 않는 방법이 있습니다.

 

 

1. 간단한 방법

프로젝트 속성 > 응용 프로그램 > 출력 형식

에 보시면 콘솔 프로젝트의 경우 '콘솔 응용 프로그램'으로 설정되어 있습니다.

 

이것을 'Windows 응용 프로그램'으로 바꿔주면 명령 프롬프트 창이 띄지 않습니다.

 

단순히 콘솔 창만 가리고 싶다면 이 방법이 최고죠 ㅎㅎㅎ

하지만 비하인드 코드에서 아무런 제어를 할 수 없다는 단점이 있습니다.

 

 

2. 'WinAPI'를 이용한 방법

조금 번거롭더라도 '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님 답변

 

리눅스에서는 다른 방법을 써야겠죠?