첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형

■ SetConsoleTextAttribute API 함수 : 콘솔 텍스트 색상 설정하기

------------------------------------------------------------------------------------------------------------------------


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

    };

}

 

 

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

    }

}

 

 

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
TAG , ,

댓글을 달아 주세요