INFORMACIÓN: Impide que desaparece la ventana de consola

Seleccione idioma Seleccione idioma
Id. de artículo: 99115 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Cuando se inicia una aplicación de consola desde el Explorador de Windows de administrador de archivos, el Administrador de programas, o bien escribir Inicio <progname> desde el símbolo del sistema, se ejecuta en su propia consola. Esta consola desaparece tan pronto como la aplicación termina y, por lo tanto, el usuario no puede leer nada se escriben en la pantalla entre el último pausa y salir del programa. Existen dos enfoques para evitar que desaparece la ventana de consola.

Más información

Método 1: Pausa si se ejecuta el proceso en la consola independiente

El primer método es para implementar una aplicación de consola no termina inmediatamente cuando se está ejecutando en una ventana de consola independiente. No es probable que se desea una aplicación para siempre hacer una pausa después de mostrar información en la ventana de consola cuando inicia desde el símbolo del sistema. Sin embargo, no es API (interfaz de programación de aplicaciones) que determina directamente 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 supone 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 combine una Borrar pantalla (CLS) y ejecución de la aplicación en un paso (por ejemplo, [C:\] CLS & <progname>), ya que coloque el cursor se va (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 finalizada 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
Después de consoleapp.exe ha finalizado, el modificador /K realiza la ventana de consola permanezca en la pantalla. El usuario de aplicación, a continuación, puede escribir el comando exit para cerrar la ventana de consola.

Propiedades

Id. de artículo: 99115 - Última revisión: martes, 21 de noviembre de 2006 - Versión: 4.1
La información de este artículo se refiere a:
  • Microsoft Win32 Application Programming Interface sobre las siguientes plataformas
    • Microsoft Windows NT Advanced Server 3.1
    • Microsoft Windows NT 4.0
    • Microsoft Windows NT 3.51 Service Pack 5
    • Microsoft Windows NT 4.0
    • the operating system: Microsoft Windows 2000
    • the operating system: Microsoft Windows XP
Palabras clave: 
kbmt kbconsole kbinfo kbkernbase kbprogramming KB99115 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 99115

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com