Feedback

C# - Console löschen

Veröffentlicht von am 19.06.2006
(2 Bewertungen)
Löscht den kompletten Inhalt bei einer Consolenanwendung im .NET Framework 1.1
using System;
using System.Runtime.InteropServices;

// Klasse zum löschen des Konsoleninhalt 
public class ClearConsole
{		
  private const int STD_OUTPUT_HANDLE  = -11;
  private const byte EMPTY = 32;

  [StructLayout(LayoutKind.Sequential)]
    struct COORD
  {
    public short x;
    public short y;
  }

  [StructLayout(LayoutKind.Sequential)]
    struct SMALL_RECT
  {
    public short Left;
    public short Top;
    public short Right;
    public short Bottom;
  }
	
  [StructLayout(LayoutKind.Sequential)]
    struct	CONSOLE_SCREEN_BUFFER_INFO
  {
    public COORD dwSize;
    public COORD dwCursorPosition;
    public int wAttributes;
    public SMALL_RECT srWindow;
    public COORD dwMaximumWindowSize;
  }

  [DllImport("kernel32.dll", EntryPoint="GetStdHandle", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
  private static extern int GetStdHandle(int nStdHandle);

  [DllImport("kernel32.dll", EntryPoint="FillConsoleOutputCharacter", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
  private static extern int FillConsoleOutputCharacter(int hConsoleOutput, byte cCharacter, int nLength, COORD dwWriteCoord, ref int lpNumberOfCharsWritten);

  [DllImport("kernel32.dll", EntryPoint="GetConsoleScreenBufferInfo", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
  private static extern int GetConsoleScreenBufferInfo(int hConsoleOutput, ref CONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo);

  [DllImport("kernel32.dll", EntryPoint="SetConsoleCursorPosition", SetLastError=true, CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
  private static extern int SetConsoleCursorPosition(int hConsoleOutput, COORD dwCursorPosition);

  private int hConsoleHandle;

  public ClearConsole()
  {
    hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
  }

  public void Clear()
  {
    int hWrittenChars = 0;
    CONSOLE_SCREEN_BUFFER_INFO strConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();			
    COORD Home;		
    Home.x = Home.y = 0;
    GetConsoleScreenBufferInfo(hConsoleHandle, ref strConsoleInfo);
    FillConsoleOutputCharacter(hConsoleHandle, EMPTY, strConsoleInfo.dwSize.x * strConsoleInfo.dwSize.y, Home, ref hWrittenChars);
    SetConsoleCursorPosition(hConsoleHandle, Home);
  }
}

// Beispielafruf:
// ClearConsole clearCon = new ClearConsole();
// clearCon.Clear();
Abgelegt unter löscht, inhalt, löschen, console, cls, clear, screen.

3 Kommentare zum Snippet

Jan Welker schrieb am 14.07.2006:
Im .NET Framework 2.0 funktioniert auch
Console.Clear()
herbivore schrieb am 10.12.2006:
Wenn man wirklich Spaß mit der Console haben möchte, sollte man .NET 2.0 verwenden. Dort gibt es nicht nur die Clear-Methode, sondern auch viele andere Features, die man in .NET 1.x schmerzlich vermisst.
Jan Welker schrieb am 20.01.2007:
ja, zum Beispiel Farbe :-)
 

Logge dich ein, um hier zu kommentieren!