ConsoleColour.cs
上传用户:huiyue
上传日期:2022-04-08
资源大小:1429k
文件大小:3k
源码类别:

搜索引擎

开发平台:

ASP/ASPX

  1. using System;
  2. // need this to make API calls
  3. using System.Runtime.InteropServices;
  4. // From CodeProject
  5. // http://www.codeproject.com/KB/cs/console_apps__colour_text.aspx
  6. namespace PFitzsimons.ConsoleColour
  7. {
  8.     /// <summary>
  9.     /// Static class for console colour manipulation.
  10.     /// </summary>
  11.     public class ConsoleColour
  12.     {
  13.         // constants for console streams
  14.         const int STD_INPUT_HANDLE = -10;
  15.         const int STD_OUTPUT_HANDLE = -11;
  16.         const int STD_ERROR_HANDLE = -12;
  17.         [DllImportAttribute("Kernel32.dll")]
  18.         private static extern IntPtr GetStdHandle
  19.         (
  20.             int nStdHandle // input, output, or error device
  21.         );
  22.         [DllImportAttribute("Kernel32.dll")]
  23.         private static extern bool SetConsoleTextAttribute
  24.         (
  25.             IntPtr hConsoleOutput, // handle to screen buffer
  26.             int wAttributes    // text and background colors
  27.         );
  28.         // colours that can be set
  29.         [Flags]
  30.         public enum ForeGroundColour
  31.         {
  32.             Black = 0x0000,
  33.             Blue = 0x0001,
  34.             Green = 0x0002, 
  35.             Cyan = 0x0003,
  36.             Red = 0x0004,
  37.             Magenta = 0x0005,
  38.             Yellow = 0x0006,
  39.             White = 0x0007,
  40.             Grey = 0x0008
  41.         }
  42.         // class can not be created, so we can set colours 
  43.         // without a variable
  44.         private ConsoleColour()
  45.         {
  46.         }
  47.         public static bool SetForeGroundColour()
  48.         {
  49.             // default to a white-grey
  50.             return SetForeGroundColour(ForeGroundColour.White);
  51.         }
  52.         public static bool SetForeGroundColour(
  53.             ForeGroundColour foreGroundColour)
  54.         {
  55.             // default to a bright white-grey
  56.             return SetForeGroundColour(foreGroundColour, true);
  57.         }
  58.         public static bool SetForeGroundColour(
  59.             ForeGroundColour foreGroundColour, 
  60.             bool brightColours)
  61.         {
  62.             // get the current console handle
  63.             IntPtr nConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  64.             int colourMap;
  65.             
  66.             // if we want bright colours OR it with white
  67.             if (brightColours)
  68.                 colourMap = (int) foreGroundColour | 
  69.                     (int) ForeGroundColour.Grey;
  70.             else
  71.                 colourMap = (int) foreGroundColour;
  72.             // call the api and return the result
  73.             return SetConsoleTextAttribute(nConsole, colourMap);
  74.         }
  75.     }
  76. }