Language/C#

[C#] WinForm Console 띄우기

nowkoes 2024. 7. 10. 13:36

WinForm Console

개요

 

 WinForm은 기본적으로 콘솔 창을 제공하지 않는다. 하지만, 개발을 진행하면 디버깅 목적으로 특정 값을 출력할 때가 많은데 이때마다 컨트롤러에 디버깅 목적의 텍스트를 넣기엔 너무 번거롭다. 따라서 이번 시간에는 간단하게 WinForm 개발을 진행할 때 콘솔 창을 어떻게 띄우는지 알아보도록 하자.


본문

방법1 - WinAPI 활용

 

 kernel32.dll은 윈도우 운영 체제의 핵심 시스템 파일 중 하나로, 다양한 시스템 레벨의 함수를 제공한다. 이 DLL은 주로 메모리 관리, 파일 입출력, 프로세스 및 스레드 관리, 콘솔 입출력 등과 같은 저수준 작업을 수행하는 함수들을 포함하고 있다. 

 

kernel32.dll에 정의되어 있는 함수들

 

 kernel32.dll 파일 내에 정의되어 있는 함수들을 살펴보면, AllocConsole이 존재한다. 해당 함수는 현재 프로세스에 새로운 콘솔 창을 할당하는 기능을 제공한다. 따라서 C#에서 이를 런타임 중에 호출하여 해당 함수를 메모리에 로드하고 실행을 시키면 된다.

 

#define MY_DEBUG
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MyWinFormNote
{
    public partial class Form1 : Form
    {

#if MY_DEBUG
        [DllImport("kernel32.dll")]
        public static extern bool AllocConsole();
#endif

        public Form1()
        {
            InitializeComponent();
#if MY_DEBUG
            AllocConsole();
#endif
        }
    }
}

 

  일반적으로 콘솔 창은 디버깅 환경에서 사용되므로, 전처리 지시문을 사용하여 DLL 호출과 콘솔 창 할당을 묶어놓았다. 코드에서 볼 수 있듯이, System.Runtime.InteropServices 네임스페이스를 사용하여 kernel32.dll에 있는 AllocConsole 함수를 선언한 후, 생성자에서 해당 함수를 호출하면 콘솔 창이 열리는 것을 확인할 수 있다.


방법2 - 프로젝트 설정 변경

 

 dll 파일을 활용하는 방법보단 이게 더 쉬울 것 같다. 현재 작업 중인 프로젝트를 우클릭하여 속성을 연 후, 응용 프로그램의 출력 형식을 콘솔 응용 프로그램으로 바꾸면 다음과 같이 Form과 Console 창이 뜨는 것을 확인할 수 있다.

 


요약

WinForm에서 Console 창 띄우기
1. kernel32.dll 파일 활용
2. 프로젝트 속성의 응용 프로그램 출력 형식을 콘솔 응용 프로그램으로 변경
반응형

'Language > C#' 카테고리의 다른 글

[C#] 타입(1) 값 형식의 변수  (0) 2024.08.06
[C#] C# 개요 및 입출력  (0) 2024.08.05
[C#] JSON 파싱 및 DLL 배포(1)  (0) 2024.07.09
[C#] 반응형 GUI  (0) 2024.07.07