INFO: Impide que desaparece la ventana de la consola

Resumen

Cuando se inicia una aplicación de consola desde el Administrador de archivos, el Administrador de programas, Windows NT Explorer, o bien escribiendo < progname > de iniciar desde el símbolo del sistema, se ejecuta en su propia consola. Esta consola desaparece tan pronto como finaliza la aplicación y, por lo tanto, el usuario no puede leer todo lo escribe en la pantalla entre la última pausa y salir del programa. Existen dos enfoques para mantener la ventana de consola desaparece.

Más información

Método 1: Hacer una pausa si el proceso se ejecuta en una consola separada

Es el primer método para implementar una aplicación de consola no finalice inmediatamente cuando se está ejecutando en una ventana de consola independiente. No es probable que se desea una aplicación siempre hacer una pausa después de mostrar información en la ventana de la consola cuando inicia desde el símbolo del sistema. Sin embargo, no hay ninguna API (interfaz de programación de aplicaciones) que directamente determina si se permite o no la aplicación comparte una consola con CMD. EXE. Este método busca en la ubicación actual del cursor de la consola, y si es (0,0), a continuación, el programa asume que se está ejecutando en una ventana de consola independiente.

Código de ejemplo

   #include <windows.h>   #include <stdio.h>
#include <conio.h>

CONSOLE_SCREEN_BUFFER_INFO csbi;
HANDLE hStdOutput;
BOOL bUsePause;

void main(void)
{
hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
if (!GetConsoleScreenBufferInfo(hStdOutput, &csbi))
{
printf("GetConsoleScreenBufferInfo failed: %d\n", GetLastError());
return;
}

// if cursor position is (0,0) then use pause
bUsePause = ((!csbi.dwCursorPosition.X) &&
(!csbi.dwCursorPosition.Y));

printf("Interesting information to read.\n");
printf("More interesting information to read.\n");

// only pause if running in separate console window.
if (bUsePause)
{
int ch;
printf("\n\tPress any key to exit...\n");
ch = getch();
}
}

NOTA: Este método no funcionará si el usuario combina una pantalla clara (CLS) y ejecución de la aplicación en un solo paso (por ejemplo, CLS [C:\] & < progname >), ya que el cursor se coloque sea (0, 0), pero la aplicación está utilizando la consola, que pertenece a CMD. EXE.

Método 2: Iniciar la consola con cmd.exe /K

Este método es para iniciar una aplicación de consola en una ventana independiente y forzar la ventana permanezca una vez que termina la aplicación. Una aplicación puede utilizar la siguiente línea de comandos con WinExec(), CreateProcess(), o en un archivo por lotes:
cmd /K consoleapp.exe
Una vez que termina consoleapp.exe, el modificador/k hace que la ventana de consola permanezca en la pantalla. El usuario de la aplicación, a continuación, puede escribir el comando exitpara cerrar la ventana de consola.
Propiedades

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

Comentarios