Парочка методов для не стандартной работы с консолью.
Вывод цветного текста в консоль.
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");
}
}
Я в шоке от этого кода.
ОтветитьУдалить