반응형

C# : 콘솔 앱 프로젝트에서 콘솔 감추기

알게된 배경

 프로젝트에서 윈도우 폼UI 부분은 C#이 비교적 생산성이 높다고 해서 알아보게 되었다. 특히 콘솔 앱(.NET Framework) 중에서 동적으로 UI 생성이 가능하다는 것을 알게 되었다. 아마 내 기억에는 MFC도 콘솔에서 구현은 가능하지만 정신건강상 하지 않는게 좋은걸로 알고있다. 암튼, 이를 이용해서 생성 연습을 하던중 콘솔창을 감추는 방법을 검토하면서 기록하게 되었다.

 

참조(Reference) 설정

솔루션 탐색기에서 참조에 마우스 우클릭으로 참조 추가를 선택하여 System.Windows.Forms 항목을 체크를 표시해야 된다.

 

소스코드

아직 C#이 익숙하지 않지만, Main의 마지막 2줄은 윈도우 폼을 생성하는 코드이다.

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace winform
{
    class MainApp : Form
    {         
        [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;
        
        static void Main(string[] args)
        {
            var handl = GetConsoleWindow();
            ShowWindow(handl, SW_HIDE);
                
            MainApp form = new MainApp();
            Application.Run(form);
        }
    }
}

 

 실행을 해보면 콘솔이 생겼다가 윈도우 폼이 생성되면서 콘솔창이 사라지는 것을 확인할 수 있다. 이는 폼 클래스내부에 메인이 함수가 있어서 발생하는 듯하다. 반드시 위의 소스처럼 사용할 필요는 없고 다만, 각 코드의 위치때문에 기록을 남긴다.

 

참고자료

스택오버플로어

 

 

반응형

+ Recent posts