Cómo borrar la ventana de consola mediante programación utilizando Visual C#

Para obtener una versión de Visual Basic de este artículo, consulte 319239 .


En este artículo se refiere a los siguientes espacios de nombres de biblioteca de clases de Microsoft.NET Framework:
  • Sistema
  • System.Runtime.InteropServices

EN ESTA TAREA

Resumen

En este artículo paso a paso se muestra cómo borrar la ventana de la consola mediante programación utilizando Visual C#.


Programa de ejemplo

  1. Inicie Microsoft Visual Studio.
  2. Cree un nuevo proyecto de aplicación de consola de Visual C#.
  3. Pegue la siguiente instrucción using al principio de la clase predeterminada:
       using nsClearConsole;
  4. Pegue el código siguiente en el procedimiento Main de la aplicación de consola:
    static void Main(string[] args){
    ClearConsole ClearMyConsole = new ClearConsole();
    Console.WriteLine("THIS IS FIRST LINE"); // Some text
    Console.WriteLine("THIS IS SECOND LINE"); // Some text
    Console.WriteLine("THIS IS THIRD LINE"); // Some text
    Console.WriteLine("THIS IS FOURTH LINE"); // Some text
    Console.WriteLine("THIS IS FIFTH LINE"); // Some text
    Console.WriteLine("Hit Enter to Clear"); // Some text
    Console.ReadLine(); // Wait for user input
    ClearMyConsole.Clear(); // Clear the screen
    Console.WriteLine("THE CONSOLE WAS CLEARED"); // Some text to clear console
    Console.WriteLine("Hit Enter to Terminate"); //Some text
    Console.ReadLine(); // Wait for user input
    }

  5. En el menú proyecto , haga clic en Agregar clase.
  6. En el cuadro de diálogo Agregar nuevo elemento , seleccione clasey, a continuación, haga clic en Agregar.
  7. Reemplace todo el código existente en la nueva clase con el código siguiente:
       using System;   using System.Runtime.InteropServices;

    namespace nsClearConsole
    {
    /// <summary>
    /// Summary description for ClearConsole.
    /// </summary><BR/>
    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)]
    structCONSOLE_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()
    {
    //
    // TODO: Add constructor logic here.
    //
    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);
    }
    }
    }


  8. Presione F5 para ejecutar la aplicación. Tenga en cuenta que el texto en la ventana de la consola está desactivado.

Referencias

Para obtener más información acerca de las funciones de la consola, visite el siguiente sitio Web de Microsoft Developer Network (MSDN):
Propiedades

Id. de artículo: 319257 - Última revisión: 17 ene. 2017 - Revisión: 1

Comentarios