如实现清屏功能:
static void Main(string[] args)
{
Console.WriteLine("asfasdf");
Process.Start("cmd.exe","/c cls");
}但程序运行时,会开屏另外一个DOS窗口下执行,不会清本屏的信息,如何解决?
static void Main(string[] args)
{
Console.WriteLine("asfasdf");
Process.Start("cmd.exe","/c cls");
}但程序运行时,会开屏另外一个DOS窗口下执行,不会清本屏的信息,如何解决?
class StdHandleEnum
{
public const int STD_INPUT_HANDLE = -10;
public const int STD_OUTPUT_HANDLE = -11;
public const int STD_ERROR_HANDLE = -12;
}; // This sructure contains a screen coordinate.
class cls
{
internal struct COORD
{
public short X;
public short Y;
} // This stucture contains information about the
// console screen buffer.
[StructLayout(LayoutKind.Sequential, Pack=1)]
internal struct CONSOLE_SCREEN_BUFFER_INFO
{
public COORD Size;
public COORD p1;
public short a1;
public short w1;
public short w2;
public short w3;
public short w4;
public COORD m1;
} // We need these four functions from KERNEL32.DLL.
// The GetStdHandle() function returns a handle to any
// standard input or output.
[DllImport("kernel32.dll")]
public static extern int GetStdHandle(int nStdHandle); // The GetConsoleScreenBufferInfo() returns information
// about the console screen buffer so we know how much to
// clear.
[DllImport("kernel32.dll")]
public static extern bool GetConsoleScreenBufferInfo(int hConsoleOutput, out CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo); // The SetConsoleCursorPosition() places the cursor on
// the console screen.
[DllImport("kernel32.dll")]
public static extern bool SetConsoleCursorPosition(int hConsoleOutput, COORD dwCursorPosition); // The FillConsoleOutputCharacter() allows us to place
// any character on the console screen. Using a space
// clears the display area.
[DllImport("kernel32.dll",SetLastError=true,CharSet=CharSet.Auto)]
public static extern bool FillConsoleOutputCharacter(int hConsoleOutput, short cCharacter, int nLength, COORD WriteCoord, out int lpNumberOfCharsWritten); [STAThread]
public static void Clear()
{
// Needed ask Windows about the console screen
// buffer settings.
CONSOLE_SCREEN_BUFFER_INFO CSBI;
// Handle to the output device.
int hOut;
// Number of characters written to the screen.
int CharOut;
// Home cursor position.
COORD Home; // Clear the screen.
// Begin by getting a handle to the console screen.
hOut = GetStdHandle(StdHandleEnum.STD_OUTPUT_HANDLE); // Get the required console screen buffer information.
GetConsoleScreenBufferInfo(hOut, out CSBI ); // Set the home position for the cursor.
Home.X = 0;
Home.Y = 0; // Fill the console with spaces.
FillConsoleOutputCharacter(hOut,
(short) ' ',
CSBI.Size.X * CSBI.Size.Y,
Home,
out CharOut); // Place the cursor in the upper left corner.
SetConsoleCursorPosition(hOut, Home); // Show the screen is clear.
//Console.ReadLine();
}
}
//******************** 清屏命令 end ********************//
在主程序中调用 cls.Clear();