La consola de Windows es la infraestructura para las 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 utilizando la combinación de teclas Alt+ ↵ Enter. El modo de texto no está disponible en Windows Vista y versiones posteriores. Sin embargo, a partir de Windows 10 , está disponible un modo de pantalla completa nativo.
Las instancias de la consola de Windows se utilizan normalmente para aplicaciones que no necesitan mostrar imágenes, pero que pueden utilizar colores. Algunos ejemplos son cmd.exe , Windows PowerShell , Far Manager y Midnight Commander .
En 2019, el host de la consola se convirtió en 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 de un 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 en el adaptador de vídeo . Esto es análogo a una consola de sistema de texto . Este modo de pantalla completa inicial solo admite modos de texto compatibles con VGA, lo que le da una resolución máxima de caracteres de 80 columnas por 28 filas. [2] Este modo quedó obsoleto en Windows Vista . [3] Era posible evitar este problema instalando un controlador de pantalla de Windows XP; [3] sin embargo, Windows 8 y versiones posteriores no los aceptan. [4] Windows 10 presenta un modo de pantalla completa una vez más, 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 puede hacer que las aplicaciones cambien entre los dos modos usando la combinación de teclas + .Alt↵ Enter
El buffer de entrada es una cola donde se almacenan los eventos (del teclado , ratón , etc.). El buffer 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 solo uno está activo (es decir, se muestra) en un momento determinado. Las aplicaciones pueden interactuar mediante programación con Windows Console a través de Windows API , que expone tanto funciones de alto nivel (como ReadConsole
and WriteConsole
) como funciones de bajo nivel (por ejemplo, ReadConsoleInput
and WriteConsoleOutput
). [6]
Los usuarios pueden cambiar la paleta de colores o la fuente , ya sea a nivel de todo el sistema o a nivel 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 consola de Windows son distintas de las aplicaciones MS-DOS , aunque en Windows (especialmente en Windows 9x ) pueden no parecer diferentes. Las aplicaciones de 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 DOS no pueden acceder a la API de Windows y solo pueden ejecutarse en versiones de 32 bits de Windows con la ayuda de la máquina virtual 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 MS-DOS que se ejecutaban en una ventana. Para simplificar la tarea de trasladar 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 llamaba EasyWin.
El soporte de Windows 9x es relativamente pobre comparado con Windows NT , porque la ventana de 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 tuvo que ser dirigida a ella por conagent.exe ejecutándose en una VM DOS que también se usa para aplicaciones DOS reales al enganchar la interrupción del teclado. conagent.exe
luego llama a Vcond (que es un VxD ). Vcond luego tuvo que pasar la entrada del teclado a la VM 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 que son locales a una VM 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 del carácter, un byte para los atributos (el carácter debe estar en el conjunto de caracteres OEM , el atributo debe tener un fondo de alta intensidad/sin parpadeo). Esto acelera considerablemente la operación si se utiliza el modo de texto VGA real.
Tradicionalmente, el subsistema de ejecución de cliente/servidor (CSRSS) ha sido responsable de administrar las ventanas de consola en la familia de sistemas operativos Windows NT. [7] En Windows 7 , CSRSS genera uno conhost.exe
para cada ventana de consola, para administrarla. En Windows 8 y posteriores, las aplicaciones de 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 altamente privilegiado, 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 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 el código de carácter, dos bytes para los atributos. El carácter se codifica entonces en un subconjunto de 16 bits de Unicode ( UCS-2 ). [9] Para compatibilidad con versiones anteriores, las API de consola existen en dos versiones: Unicode y no Unicode. Las versiones no Unicode de las API pueden utilizar el cambio de página de códigos para ampliar el rango de caracteres mostrados (pero solo si se utilizan 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] (mostrando solo desde el subconjunto UCS-2 de Unicode completo [ cita requerida ] ).
A partir de la actualización de octubre de 2018 de Windows 10 , la consola de Windows tiene soporte completo para Unicode. [11]
Los controladores XDDM y VGA no se compilarán en Windows 8 y versiones posteriores
Consola: Solución para el problema de que no se muestra texto de salida en la página de códigos 65001 (utf8)