情報: が消えるをコンソール ウィンドウを防止します。

概要

コンソール アプリケーションが起動すると、ファイル マネージャー、プログラム マネージャーは、Windows NT エクスプ ローラーで、またはコマンド プロンプトから< progname > の開始を入力して、独自のコンソールで実行します。このコンソールとすぐにアプリケーションが終了すると、そのため、ユーザーが読み取ることができない最後の一時停止とプログラムの終了の画面に何も表示されなくなります。コンソール ウィンドウが消失するを防ぐための 2 つの方法があります。

詳細

プロセスが別のコンソールで実行されている場合、方法 1: 一時停止

最初のメソッドは、別のコンソール ウィンドウで実行されているときにすぐに終了するのにはコンソール アプリケーションを実装するためです。そうな場合は、プロンプトから起動したときにコンソール ウィンドウに情報を表示した後は常に一時停止するアプリケーションではありません。ただし、直接コマンドとコンソールを共有するかどうかを決定する API (アプリケーション ・ プログラミング ・ インタ フェース) はありません。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 >) の 1 つの手順を実行する (0, 0)、アプリケーションがコマンドに含まれると、コンソールを使用していますEXE です。

方法 2: cmd.exe でコンソールを起動する/K

このメソッドは、別のウィンドウでコンソール アプリケーションを起動して、強制的にウィンドウをアプリケーションが終了後に残っているのです。WinExec()、CreateProcess()、またはバッチ ファイルで、アプリケーションは次のコマンドラインを使用できます。
cmd/K consoleapp.exe
Consoleapp.exe が終了すると、コンソール ウィンドウが画面上に残りますが、/K スイッチします。アプリケーションのユーザーは、コンソール ウィンドウを閉じるに [終了] コマンドを入力します。
プロパティ

文書番号:99115 - 最終更新日: 2017/01/12 - リビジョン: 1

フィードバック