This short piece of code shows you how to display text in color in a C# windows console program. The corresponding WIN32 API functions are in the kernel32.dll and are imported and declared external. The only other problem is to assign variable types that accommodate the types listed in the Win32 API help file.
Color your Console text (C#)
Ketsuekiame commented: Overly complicated PInvoke for a very simple task. .NET allows you to accomplish this with minimal effort. -2
// change text color in Windows console mode
// colors are 0=black 1=blue 2=green 4=red and so on to 15=white
// colorattribute = foreground + background * 16
// to get red text on yellow use 4 + 14*16 = 228
// light red on yellow would be 12 + 14*16 = 236
//
// the necessary WinApi functions are in kernel32.dll
// in C# Handle = IntPtr DWORD = uint WORD = int
// STD_OUTPUT_HANDLE = 0xfffffff5 (from winbase.h)
//
// a Console Application tested with VCS.NET 2003
using System;
using System.Runtime.InteropServices; // DllImport()
namespace TextColor1
{
class MainClass
{
[DllImport("kernel32.dll")]
public static extern bool SetConsoleTextAttribute(IntPtr hConsoleOutput,
int wAttributes);
[DllImport("kernel32.dll")]
public static extern IntPtr GetStdHandle(uint nStdHandle);
public static void Main(string[] args)
{
uint STD_OUTPUT_HANDLE = 0xfffffff5;
IntPtr hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
// increase k for more color options
for (int k = 1; k < 255; k++)
{
SetConsoleTextAttribute(hConsole, k);
Console.WriteLine("{0:d3} I want to be nice today!",k);
}
// final setting
SetConsoleTextAttribute(hConsole, 236);
Console.WriteLine("Press Enter to exit ...");
Console.Read(); // wait
}
}
}
vegaseat 1,735 DaniWeb's Hypocrite Team Colleague
catapult 0 Newbie Poster
armando.miani 0 Newbie Poster
zempf13 0 Newbie Poster
KrayZVIII 0 Newbie Poster
Be a part of the DaniWeb community
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.