Парочка методов для не стандартной работы с консолью.
Вывод цветного текста в консоль.
using System;using System.Runtime.InteropServices;namespace ConsoleExt{public class ConsoleColorManager
{ private Handles m_Handle; // Константы потоков консолиpublic enum Handles
{STD_INPUT_HANDLE = -10,
STD_OUTPUT_HANDLE = -11,
STD_ERROR_HANDLE = -12
}
// Импортируем методов [DllImportAttribute("Kernel32.dll")]private static extern IntPtr GetStdHandle
(
int nStdHandle // тип консольного потока
);
[DllImportAttribute("Kernel32.dll")]private static extern bool SetConsoleTextAttribute
(
IntPtr hConsoleOutput, // дескриптор потокаint wAttributes // цвет текста и фона
);
// Цвета (флаги)[Flags]
public enum Color
{Black = 0x0000,
Blue = 0x0001,
Green = 0x0002,
Cyan = 0x0003,
Red = 0x0004,
Magenta = 0x0005,
Yellow = 0x0006,
Grey = 0x0007,
White = 0x0008
}
// По выбираем поток OUTPUT public ConsoleColorManager() {m_Handle = Handles.STD_OUTPUT_HANDLE;
}
public ConsoleColorManager(Handles Handle) {m_Handle = Handle;
}
// установка цвета по умолчаниюpublic bool SetDefaultColor()
{return SetColor(Color.Grey, true);
}
// установка цвета текста // флаг fLight задает яркость цветаpublic bool SetColor(Color aColor, bool fLight)
{ // получаем дескриптор IntPtr ConsoleHandle = GetStdHandle((int)m_Handle); // получаем цветint colorMask = (int)aColor;
// если нужен яркий цвет, добавляем White if (fLight) colorMask |= (int)Color.White; // устанавливаем цвет текста return SetConsoleTextAttribute(ConsoleHandle, colorMask);}
}
Пример C# изменения цвета текста при выводе в консоль:
class сlass{static void Агтс()
{ ConsoleColorManager colorManager = new ConsoleColorManager(); // установка цвета colorManager.SetColor(ConsoleColorManager.Color.Green, true); Console.WriteLine("Красивый зеленый цвет текста"); // изменение цвета colorManager.SetColor(ConsoleColorManager.Color.Red , false); Console.WriteLine("Красный текст"); // Восстанавливаем цвет по умолчаниюcolorManager.SetDefaultColor();
Console.ReadLine();
}
}
Изменение заголовка консольной программы C#.
using System;using System.Runtime.InteropServices; class Сlass { [DllImport("kernel32.dll")]public static extern bool SetConsoleTitle(String lpConsoleTitle);
static void Metod()
{ SetConsoleTitle("New title");}
}
Я в шоке от этого кода.
ОтветитьУдалить