첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ ConsoleTextColor.cs

namespace TestProject
{
    /// <summary>
    /// 콘솔 텍스트 색상
    /// </summary>
    public enum ConsoleTextColor
    {
        BLACK,
        BLUE,
        GREEN,
        JADE,
        RED,
        PURPLE,
        YELLOW,
        WHITE,
        GRAY,
        LIGHT_BLUE,
        LIGHT_GREEN,
        LIGHT_JADE,
        LIGHT_RED,
        LIGHT_PURPLE,
        LIGHT_YELLOW,
        LIGHT_WHITE
    };
}

 

728x90

 

▶ WIN32APIHelper.cs

using System;
using System.Runtime.InteropServices;
 
namespace TestProject
{
    /// <summary>
    /// WIN32 API 헬퍼
    /// </summary>
    public static class WIN32APIHelper
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Import
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 표준 핸들 구하기 - GetStdHandle(standardDevice)

        /// <summary>
        /// 표준 핸들 구하기
        /// </summary>
        /// <param name="standardDevice">표준 장치</param>
        /// <returns>표준 핸들</returns>
        /// <remarks>
        /// STD_INPUT_HANDLE  : -10
        /// STD_OUTPUT_HANDLE : -11
        /// STD_ERROR_HANDLE  : -12
        /// </remarks>
        [DllImport("Kernel32.dll")]
        private static extern IntPtr GetStdHandle(int standardDevice);

        #endregion
        #region 콘솔 텍스트 어트리뷰트 설정하기 - SetConsoleTextAttribute(consoleOutputHandle, attribute)

        /// <summary>
        /// 콘솔 텍스트 어트리뷰트 설정하기
        /// </summary>
        /// <param name="consoleOutputHandle">콘솔 출력 핸들</param>
        /// <param name="attribute">어트리뷰트</param>
        /// <returns>처리 결과</returns>
        [DllImport("Kernel32.dll")]
        private static extern int SetConsoleTextAttribute(IntPtr consoleOutputHandle, short attribute);

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// STD_OUTPUT_HANDLE
        /// </summary>
        private const int STD_OUTPUT_HANDLE = -11;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Public

        #region 콘솔 텍스트 색상 설정하기 - SetConsoleTextColor(color)

        /// <summary>
        /// 콘솔 텍스트 색상 설정하기
        /// </summary>
        /// <param name="color">색상</param>
        public static void SetConsoleTextColor(ConsoleTextColor color)
        {
            IntPtr handle = GetStdHandle(STD_OUTPUT_HANDLE);

            SetConsoleTextAttribute(handle, (short)color);
        }

        #endregion
    }
}

 

300x250

 

▶ Program.cs

using System;

namespace TestProject
{
    /// <summary>
    /// 프로그램
    /// </summary>
    class Program
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Static
        //////////////////////////////////////////////////////////////////////////////// Private

        #region 프로그램 시작하기 - Main()

        /// <summary>
        /// 프로그램 시작하기
        /// </summary>
        private static void Main()
        {
            Console.Title = "SetConsoleTextAttribute API 함수 : 콘솔 텍스트 색상 설정하기";

            WIN32APIHelper.SetConsoleTextColor(ConsoleTextColor.GREEN);

            Console.WriteLine("테스트 문자열 입니다.");

            WIN32APIHelper.SetConsoleTextColor(ConsoleTextColor.WHITE);

            Console.WriteLine("테스트 문자열 입니다.");

            WIN32APIHelper.SetConsoleTextColor(ConsoleTextColor.LIGHT_PURPLE);

            Console.WriteLine("테스트 문자열 입니다.");

            WIN32APIHelper.SetConsoleTextColor(ConsoleTextColor.WHITE);

            Console.WriteLine("테스트 문자열 입니다.");
        }

        #endregion
    }
}
728x90
반응형
그리드형(광고전용)
Posted by 사용자 icodebroker

댓글을 달아 주세요