ИНФОРМАЦИЯ: Предотвращение окно консоли из исчезновение

Переводы статьи Переводы статьи
Код статьи: 99115 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

При запуске консольного приложения из диспетчера файлов, руководитель программы Проводник Windows NT или введяSTART ::<progname></progname>в командной строке он выполняет собственной консоли. Эта консоль исчезнет сразу же завершает работу приложения, и поэтому пользователю не удается прочитать все записи на экран последнее Пауза и выход из программы. Существует два подхода для предотвращения исчезновение окна консоли.

Дополнительная информация

Метод 1: Пауза, если процесс — это выполняется в отдельной консоли

Первый метод используется для реализации консольное приложение не завершить немедленно при работе в окне консоли отдельно. Не является, вероятно, стоит приложения всегда сделайте паузу после отображения сведений в окне консоли, при запуске в командной строке. Тем не менее не существует API (прикладной программный интерфейс), который напрямую определяет, использует ли приложение консоли с CMD.EXE. Метод ищет в текущем положении курсора консоли, и если он является (0,0), затем программа предполагает он выполняется в окне консоли отдельно.

Пример программы

   #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();
      }
   }
				
Примечание: Этот способ не работает, если пользователь объединяет очистки экрана (CLS) и выполнения приложения в одно действие (например, [C:\] CLS и <progname>), так как положение курсора будет иметь (0, 0), но использует приложение консоли, которой принадлежит CMD.EXE. </progname>

Способ 2: Запуск консоли с cmd.exe /K

Этот метод используется для запуска консольного приложения в отдельном окне и принудительное окна должны оставаться после завершение приложения. Приложение может использовать следующую командную строку с WinExec() CreateProcess(), или в пакетном файле:
CMD /K consoleapp.exe
После завершение consoleapp.exe параметром /K делает окно консоли, которые остаются на экране. Затем можно ввести пользователя приложенияExitкоманда для закрытия окна консоли.

Свойства

Код статьи: 99115 - Последний отзыв: 8 ноября 2010 г. - Revision: 2.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Win32 Application Programming Interface
Ключевые слова: 
kbconsole kbinfo kbkernbase kbprogramming kbmt KB99115 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:99115

Отправить отзыв

 

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