Win32アプリケーションで MS-DOS プロンプトを表示

デバッグ目的なら OutputDebugString?() で事足りるが、 それ以外の場合にもコンソール表示したいよ? というときに便利な方法。

AllocConsole()

で、DOS 窓が表示され、

WriteConsole()

で、その DOS 窓に対して文字列を表示して、

FreeConsole()

で、その DOS 窓を閉じる。

WriteConsole?() の第1引数はバッファのハンドルであるが、

GetStdHandle(STD_OUTPUT_HANDLE);

で取得したものをそのまま使えば良い。

Ex)

// DOS 窓表示
::AllocConsole();

// 適当な文字列
char buf [16];
sprintf( buf, "Hello World!\n" ); 

// 表示
DWORD dwSize;
::WriteConsole( GetStdHandle(STD_OUTPUT_HANDLE), buf, strlen( buf ), &dwSize, NULL );

// DOS 窓を閉じる
::FreeConsole();

これはいろいろ使い道がありそう。


プログラム・開発系メモ


トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-15 (土) 12:07:56 (5092d)