La Consola de Windows es la infraestructura para aplicaciones de consola en Microsoft Windows . Una instancia de una consola de Windows tiene un búfer de pantalla y un búfer de entrada . Permite que las aplicaciones de consola se ejecuten dentro de una ventana o en modo de texto de hardware (para ocupar toda la pantalla). El usuario puede cambiar entre los dos usando la combinación de teclas Alt+ . ↵ EnterEl modo de texto no está disponible en Windows Vista y versiones posteriores. Sin embargo, a partir de Windows 10 , está disponible un modo nativo de pantalla completa.
Las instancias de la consola de Windows se usan normalmente para aplicaciones que no necesitan mostrar imágenes pero que pueden usar color. Los ejemplos incluyen cmd.exe , Windows PowerShell , Far Manager y Midnight Commander .
En 2019, el host de la consola era de código abierto bajo la licencia MIT , junto con Windows Terminal . [1]
En Windows, una aplicación de consola puede ejecutarse en dos modos.
Un modo coloca el texto en una ventana y utiliza la representación de fuentes del sistema operativo . En este modo, la interacción de una aplicación con el usuario está controlada por el sistema de ventanas. Esto es análogo a las aplicaciones del sistema X Window como xterm .
El segundo es el modo de pantalla completa. En Windows XP y versiones anteriores, la consola de pantalla completa utiliza un modo de texto de hardware y carga una fuente rasterizada al adaptador de vídeo . Esto es análogo a una consola de sistema de texto . Este primer modo de pantalla completa solo admite modos de texto compatibles con VGA, lo que le otorga una resolución máxima de caracteres de 80 columnas por 28 filas. [2] Este modo quedó obsoleto en Windows Vista . [3] Fue posible solucionar este problema instalando un controlador de pantalla de Windows XP; [3] sin embargo, Windows 8 y posteriores no los aceptan. [4] Windows 10 vuelve a presentar un modo de pantalla completa, pero esta implementación utiliza el subsistema de renderizado nativo de Windows, en lugar del modo de texto. Puede tener tantas columnas y filas como quepan en la pantalla. [5]
Se pueden crear aplicaciones para cambiar entre los dos modos usando la combinación de teclas + .Alt↵ Enter
El búfer de entrada es una cola donde se almacenan los eventos (desde el teclado , el mouse , etc.). El búfer de salida es una cuadrícula rectangular donde se almacenan los caracteres, junto con sus atributos. Una ventana de consola puede tener varios buffers de salida, de los cuales sólo uno está activo (es decir, se muestra) en un momento dado. Las aplicaciones pueden interactuar mediante programación con la consola de Windows a través de la API de Windows , que expone tanto funciones de alto nivel (como ReadConsole
y WriteConsole
) como funciones de bajo nivel (por ejemplo, ReadConsoleInput
y WriteConsoleOutput
). [6]
Los usuarios pueden cambiar la paleta de colores o la fuente , ya sea a nivel de todo el sistema o de la aplicación. Sin embargo, cada instancia de una aplicación de consola no puede cambiar su paleta de colores o fuente sobre la marcha.
Las aplicaciones de la consola de Windows son distintas de las aplicaciones de MS-DOS , aunque en Windows (especialmente en Windows 9x ), es posible que no se vean diferentes. Las aplicaciones de la consola de Windows tienen acceso a toda la API de Windows y no se ejecutan en MS-DOS ni en sistemas operativos compatibles. Sin embargo, las aplicaciones de DOS no pueden acceder a la API de Windows y sólo pueden ejecutarse en versiones de 32 bits de Windows con la ayuda de una máquina virtual de DOS (VDM).
En Windows 3.1 y versiones anteriores, no hay soporte nativo para consolas. Debido a que esas versiones son simplemente una interfaz gráfica para MS-DOS, la mayoría de los programas de texto que se ejecutaban en versiones anteriores de Windows eran en realidad programas de MS-DOS que se ejecutaban en una ventana. Para simplificar la tarea de migrar aplicaciones a Windows, las primeras versiones de Visual C++ se suministran con QuickWin , una biblioteca que implementa la funcionalidad básica de la consola dentro de una ventana normal. Una biblioteca similar para Borland C++ se llamó EasyWin.
El soporte de Windows 9x es relativamente pobre en comparación con Windows NT , porque la ventana de la consola se ejecuta en la máquina virtual DOS del sistema y, por lo tanto, la entrada del teclado a una aplicación de consola Win32 tenía que ser dirigida a ella mediante conagent.exe ejecutándose en una máquina virtual DOS que también se usa. para aplicaciones DOS reales conectando la interrupción del teclado. conagent.exe
luego llama a Vcond (que es un VxD ). Luego, Vcond tuvo que pasar la entrada del teclado a la máquina virtual del sistema y, finalmente, a la aplicación de consola Win32. Además del rendimiento, otro problema con esta implementación es que las unidades locales de una máquina virtual DOS no son visibles para una aplicación de consola Win32. Esto puede causar confusión.
En Windows 9x, el búfer de pantalla refleja la estructura del búfer de texto VGA , con dos bytes por celda de carácter: un byte para el código de carácter, un byte para los atributos (el carácter debe estar en el juego de caracteres OEM , el atributo tiene un fondo de alta intensidad). /sin parpadear). Esto acelera considerablemente la operación si se utiliza el modo de texto VGA real.
Tradicionalmente, el subsistema de ejecución cliente/servidor (CSRSS) ha sido responsable de administrar las ventanas de la consola en la familia de sistemas operativos Windows NT . [7] En Windows 7 , CSRSS genera uno conhost.exe
para cada ventana de la consola, para administrarla. En Windows 8 y versiones posteriores, las aplicaciones de la consola generan sus conhost.exe
procesos directamente. Este cambio tiene implicaciones tanto de seguridad como de usabilidad. Si bien CSRSS se ejecuta en un contexto de seguridad con privilegios elevados, cada uno conhost.exe
se ejecuta en el mismo contexto de seguridad que la aplicación de consola. Además, en Windows 7, este cambio permitió que las ventanas de la consola tuvieran las características del tema Aero Glass . [8]
En Windows NT y Windows CE , el búfer de pantalla utiliza cuatro bytes por celda de carácter: dos bytes para código de carácter, dos bytes para atributos. Luego, el carácter se codifica en un subconjunto de Unicode de 16 bits ( UCS-2 ). [9] Para compatibilidad con versiones anteriores, las API de la consola existen en dos versiones: Unicode y no Unicode. Las versiones de API que no son Unicode pueden usar el cambio de página de códigos para ampliar el rango de caracteres mostrados (pero solo si se usan fuentes TrueType para la ventana de la consola, ampliando así el rango de códigos disponibles). Incluso UTF-8 está disponible como "página de códigos 65001" [10] (se muestra solo desde el subconjunto UCS-2 de Unicode completo [ cita requerida ] ).
A partir de la actualización de Windows 10 de octubre de 2018, la consola de Windows tiene compatibilidad total con Unicode. [11]
Los controladores XDDM y VGA no se compilarán en Windows 8 y versiones posteriores
Consola: Solución para que no se muestre ningún texto de salida en la página de códigos 65001 (utf8)