关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例
在Windows环境下,对于C#编写的控制台应用程序,可以执行一系列设置,包括设定窗口标题、禁用关闭按钮、关闭快速编辑和插入模式,以及指定文本颜色等操作。

#region 设置控制台标题 禁用关闭按钮
导入名为 "FindWindow" 的函数,该函数位于 "user32.dll" 动态链接库中。
外部静态函数FindWindow,其参数为字符串lpClassName和lpWindowName,用于查找窗口。
引用自"user32.dll",以"GetSystemMenu"为入口点的函数声明。
外部静态函数GetSystemMenu,接受两个参数:一个为窗口句柄IntPtr hWnd,另一个为布尔值指示是否恢复,即IntPtr bRevert。
引用自"user32.dll"的函数,其入口点标记为"RemoveMenu",被设定为不可修改。
外部定义了一个静态的函数指针,该函数名为RemoveMenu,它接受两个参数:第一个参数是菜单句柄,第二个参数是位置和标志的组合,使用的是uint类型。
static void DisbleClosebtn()
{
获取窗口句柄,通过查找具有“控制台标题”的窗口,执行FindWindow函数操作,得到的结果赋值给IntPtr类型的变量windowHandle。
获取系统菜单指针,使用windowHandle作为参数,并将结果赋值给closeMenu变量。
uint SC_CLOSE = 0xF060;
移除菜单项,关闭菜单,执行SC_CLOSE操作,参数设置为0x0。
}
对控制台进行关闭的操作,通过静态方法实现,此方法名为CloseConsole,它接受两个参数:一个是发送事件的实体sender,另一个是控制台取消事件的相关参数e。
{
Environment.Exit(0);
}
#endregion
关闭快速编辑模式、插入模式
定义常量STD_INPUT_HANDLE的值为负十。
定义了一个名为ENABLE_QUICK_EDIT_MODE的常量,其值为十六进制的0x0040。
以引用方式导入,位于"kernel32.dll"库中,并设置状态为"已使用",标记为"true"。
内部静态外部方法,通过传入控制台句柄的整数值,返回一个指向标准句柄的指针。
[DllImport("kernel32.dll", SetLastError = true)]
内部静态外部接口,用于获取控制台模式,参数包括控制台句柄和输出模式值,返回类型为布尔值。
[DllImport("kernel32.dll", SetLastError = true)]
内部定义了一个外部方法,其功能是设置控制台模式,参数包括控制台句柄和模式值,返回类型为布尔型,表示操作是否成功。
public static void 关闭快速编辑模式函数
{
获取标准输入句柄,并赋值给变量hStdin。
uint mode;
获取标准输入句柄的控制模式,并将结果输出至变量mode。
mode = mode & (~ENABLE_QUICK_EDIT_MODE); // 消除快速编辑模式的启用状态,以禁用之
mode &= ~(ENABLE_INSERT_MODE); //该操作将取消设置插入模式状态
SetConsoleMode(hStdin, mode);
}
设置控制台指定文字颜色
静态方法WriteColorLine接受三个参数:字符串str、前景色colorF和背景色colorB。
{
获取当前控制台的前景色设置为:ConsoleColor currentForegroundColor。
获取当前控制台背景色,并将其赋值给变量currentBackgroundColor。
控制台的前景色被设置为colorF所指定的颜色。
控制台背景色被设置为颜色B。
Console.WriteLine(str);
控制台的前景色设置为当前的前景色值。
控制台背景色被设置为当前背景色。
}
公开静态方法,用于在控制台输出自定义颜色文本。
{
设置变量colorB的值为Console颜色枚举中的绿色背景色。
定义了一个名为colorF的Console颜色变量,其值为红色字体颜色。
string sMesg = "注意! 我是有颜色的";
执行WriteColorLine函数,将sMesg作为消息内容,colorF作为前景色,colorB作为背景色进行颜色行写入操作。
}
控制台颜色的举例
using System;
class Sample
{
public static void Main()
{
nl = Environment变量中的换行符表示;
colorNames变量是一个字符串数组,它通过调用ConsoleColor类中的GetNames方法,并传入typeof(ConsoleColor)类型信息来获取所有ConsoleColor枚举值的名称。
坚决杜绝任何擅自更改或篡改专业术语的行为,确保信息传达的准确性与规范性,维护学术研究的严肃性和权威性。
在控制台输出:“在恒定的黑色背景上,所有前景颜色均被禁用。”,其中nl代表换行符。
控制台输出:“黑色与黑色搭配难以辨认。”,接着是换行符。
for (int x = 0; x < colorNames.Length; x++)
{
Console.Write("{0,2}: ", x);
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), colorNames[x]);
Console.Write("This is foreground color {0}.", colorNames[x]);
Console.ResetColor();
Console.WriteLine();
}
// ---------------------------------------------------------------------------------------
Console.WriteLine("{0}A constant white foreground on all the background colors.", nl);
Console.WriteLine(" (White on white is not readable.){0}", nl);
for (int x = 0; x < colorNames.Length; x++)
{
Console.Write("{0,2}: ", x);
Console.ForegroundColor = ConsoleColor.White;
Console.BackgroundColor = (ConsoleColor)Enum.Parse(typeof(ConsoleColor), colorNames[x]);
Console.Write("This is background color {0}.", colorNames[x]);
Console.ResetColor();
Console.WriteLine();
}
// ---------------------------------------------------------------------------------------
}
}
这个程序的运行效果如下所示:
观察上图可知,ConsoleColor 枚举涵盖了十六种不同的色彩选择。
禁止对专有名词进行修改,同时不得加入任何英文词汇。改写后的内容需保持与原文相同的语言风格,且不得改变原文中的专有名词。将较长的句子拆分为若干短句,用逗号分隔,确保不遗漏任何标点符号。
Console的方法和属性表:
方法
Beep 已重载。 通过控制台扬声器播放提示音。
Clear 清除控制台缓冲区和相应的控制台窗口的显示信息。
MoveBufferArea 已完成重载操作。其功能是将屏幕上的特定源区域,精确地复制至目标区域。
OpenStandardError 函数已被重载,旨在获取标准错误输出流。
OpenStandardInput 函数已被成功重载,现在可以用来获取标准输入流。
OpenStandardOutput 函数已被成功重载,现在可以用来获取标准输出流。
Read 从标准输入流读取下一个字符。
ReadKey 函数已被重新加载。请等待获取用户所按下的下一个字符或功能键。
ReadLine 从标准输入流读取下一行字符。
ResetColor 命令能够将控制台的前景与背景颜色恢复至系统预设的默认状态。
SetBufferSize 用于调整屏幕缓冲区的尺寸,具体是将其高度与宽度设定为用户指定的数值。
SetCursorPosition 设置光标位置。
SetError 函数用于将 Error 属性调整为所指定的 TextWriter 对象。
SetIn 函数用于设定 In 属性,使其指向一个特定的 TextReader 对象。
SetOut 函数的作用是将 Out 属性调整为用户指定的 TextWriter 对象。
SetWindowPosition函数负责调整控制台窗口,使其位于屏幕缓冲区的特定位置。
SetWindowSize 函数负责调整控制台窗口的大小,使其高度与宽度达到用户指定的数值。
Write函数已被重载,其功能是将指定的文本值以文本形式输出至标准输出流。
WriteLine 函数已被重载,其功能是将指定数据(随后附上当前行结束符号)输入至标准输出流中。
属性:
控制台背景颜色的获取与设置,以及缓冲区高度的读取与调整。
BufferWidth 获取或设置缓冲区的宽度。
CapsLock 键的功能是检测键盘上的大写锁定键是处于开启状态还是关闭状态。
CursorLeft 获取或设置光标在缓冲区中的列位置。
CursorSize 获取或设置光标在字符单元格中的高度。
CursorTop 获取或设置光标在缓冲区中的行位置。
CursorVisible 属性允许我们获取或设置一个标志,该标志用于表示光标是否能够被用户看到。
Error 获取标准错误输出流。
ForegroundColor 获取或设置控制台的前景色。
In 获取标准输入流。
InputEncoding 用于获取或设置控制台读取输入时使用的编码方式。
KeyAvailable 函数可以获取一个数值,该数值用来表明按键操作是否可以在输入流中找到。
LargestWindowHeight 函数可依据当前的字体样式和屏幕的分辨率信息,计算出控制台窗口能够容纳的最大行数。
LargestWindowWidth 是一个参数,它能够根据当前的字体样式和屏幕的分辨率信息,计算出控制台窗口可能达到的最大宽度,即最大列数。
NumberLock 函数能够获取一个数值,该数值用以表明 Num Lock 键盘切换功能是处于开启状态还是关闭状态。
Out 获取标准输出流。
OutputEncoding 属性可以用来获取或设置控制台输出时的编码方式。
Title 获取或设置要显示在控制台标题栏中的标题。
TreatControlCAsInput 属性用于设定或查询一个标志,此标志决定是否将控制键 Control 与控制台键 C 的组合(即 Ctrl+C)当作常规输入来处理,还是将其作为操作系统处理的中断信号。
WindowHeight 获取或设置控制台窗口区域的高度。
WindowLeft 函数负责控制台窗口区域的左边界,它既可以读取也可以调整,该边界是相对于屏幕缓冲区的起始位置而言的。
WindowTop 函数可以用来调整或查询控制台窗口顶部的具体位置,该位置是以屏幕缓冲区为基准的。
WindowWidth 获取或设置控制台窗口的宽度。
严禁对特定内容进行篡改,确保信息的准确性与完整性,维护数据的安全性和可靠性。