WriteConsole 関数

文字列を現在のカーソル位置からコンソール画面バッファーに書き込みます。

構文

BOOL WINAPI WriteConsole(
  _In_             HANDLE  hConsoleOutput,
  _In_       const VOID    *lpBuffer,
  _In_             DWORD   nNumberOfCharsToWrite,
  _Out_opt_        LPDWORD lpNumberOfCharsWritten,
  _Reserved_       LPVOID  lpReserved
);

パラメーター

hConsoleOutput [in]
コンソール画面バッファーのハンドル。 ハンドルには、GENERIC_WRITE アクセス権が必要です。 詳細については、「コンソール バッファーのセキュリティとアクセス権」を参照してください。

lpBuffer [in]
コンソール画面バッファーに書き込む文字が格納されているバッファーのポインター。 これは、WriteConsoleA 用の char または WriteConsoleW.用の wchar_t のいずれかの配列であることが想定されています。

nNumberOfCharsToWrite [in]
書き込む文字数です。 指定された文字数の合計サイズが使用可能なヒープを超えた場合、関数は、ERROR_NOT_ENOUGH_MEMORY エラーで失敗します。

lpNumberOfCharsWritten [out, optional]
実際に書き込まれた文字数を受け取る変数のポインター。

lpReserved 予約済みです。NULL にする必要があります。

戻り値

関数が成功すると、戻り値は 0 以外になります。

関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

WriteConsole 関数は、コンソール画面バッファーの現在のカーソル位置に文字を書き込みます。 文字が書き込まれるとカーソル位置が進められます。 SetConsoleCursorPosition 関数は、現在のカーソル位置を設定します。

文字は、コンソール画面バッファーに関連付けられている前景色と背景色の属性を使用して書き込まれます。 SetConsoleTextAttribute 関数は、これらの色を変更します。 現在の色の属性と現在のカーソル位置を確認するには、GetConsoleScreenBufferInfo を使用します。

WriteFile 関数の動作に影響するすべての入力モードは、WriteConsole に対しても同じ効果があります。 コンソール画面バッファーの出力モードの取得と設定を行うには、GetConsoleMode 関数と SetConsoleMode 関数を使用します。

この関数では、Unicode 文字またはコンソールの現在のコード ページの 8 ビット文字が使用されます。 コンソールのコード ページには、最初はシステムの OEM コード ページが既定で設定されます。 コンソールのコード ページを変更するには、SetConsoleCP または SetConsoleOutputCP 関数を使用します。 従来のユーザーは、chcp または mode con cp select= コマンドを使用することもできますが、それは新規の開発ではお勧めできません。

WriteConsole は、ファイルにリダイレクトされる標準ハンドルと共に使用された場合は失敗します。 リダイレクト可能な多言語出力をアプリケーションで処理する場合は、出力ハンドルがコンソール ハンドルであるかどうかを確認します (1 つの方法は、GetConsoleMode 関数を呼び出して、それが成功するかどうかを確認することです)。 ハンドルがコンソール ハンドルの場合は、WriteConsole を呼び出します。 ハンドルがコンソール ハンドルでない場合は、出力がリダイレクトされます。WriteFile を呼び出して I/O を実行する必要があります。 Unicode 形式のプレーン テキスト ファイルには、必ずバイト オーダー マークを付けてください。 詳細については、「バイト オーダー マークの使用」を参照してください。

アプリケーションで WriteConsole を使用して ANSI モードで ANSI 文字を書き込むことができますが、コンソールでは、有効にしない限り、"ANSI エスケープ" または "仮想ターミナル" シーケンスはサポートされません。 詳細とオペレーティング システムのバージョンの適用性については、「コンソール仮想ターミナル シーケンス」を参照してください。

仮想ターミナル エスケープ シーケンスが有効でない場合は、コンソール関数によって同等の機能を提供できます。 詳細については、SetCursorPosSetConsoleTextAttribute、および GetConsoleCursorInfo に関するページを参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー ConsoleApi.h (WinCon.h 経由、Windows.h をインクルード)
ライブラリ Kernel32.lib
[DLL] Kernel32.dll
Unicode 名と ANSI 名 WriteConsoleW (Unicode) と WriteConsoleA (ANSI)

関連項目

コンソール関数

GetConsoleCursorInfo

GetConsoleMode

GetConsoleScreenBufferInfo

入力と出力の方法

ReadConsole

SetConsoleCP

SetConsoleCursorPosition

SetConsoleMode

SetConsoleOutputCP

SetConsoleTextAttribute

SetCursorPos

WriteFile