■ SetConsoleTextAttribute API 함수를 사용해 콘솔 텍스트 색상을 설정하는 방법을 보여준다.
▶ ConsoleTextColor.cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 |
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")] 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")] 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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 } } |