<Return[WXYZ]><Top>

WriteConsole

Declare Function Api_WriteConsole& Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput&, lpBuffer As Any, ByVal nNumberOfCharsToWrite&, lpNumberOfCharsWritten&, lpReserved As Any)

Declare Function WriteConsole Lib "kernel32" Alias "WriteConsoleA" (ByVal hConsoleOutput As Long, lpBuffer As Any, ByVal nNumberOfCharsToWrite As Long, lpNumberOfCharsWritten As Long, lpReserved As Any) As Long

コンソールスクリーンバッファの現在のカーソル位置に文字列を挿入する。

パラメータ
hConsoleOutput
    書き込み先コンソールスクリーンバッファのハンドルを指定する。このハンドルには、GENERIC_WRITE アクセス権が必要である。
lpBuffer
    スクリーンバッファに書き込む文字が入ったバッファへのポインタを指定する。
nNumberOfCharsToWrite
    スクリーンバッファに書き込む文字数を指定する。
lpNumberOfCharsWritten
    スクリーンバッファに実際に書き込まれた文字数を受け取る 32 ビット変数へのポインタを指定する。
lpReserved
    予約済み。必ず NULL を指定する。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。

解説
    WriteConsole 関数は、コンソールスクリーンバッファに文字を書き込む。WriteFile 関数に似た動作をするが、WriteConsole 関数は

    Unicode(ワイド文字)と ANSI のどちらのモードでも書き込みが可能である。両方のモードと互換性のある出力元を 1 セットだけ保持するアプ

    リケーションを作成する場合は、WriteFile 関数ではなく WriteConsole 関数を使う。WriteConsole 関数に渡すことができるのは、コンソー

    ルスクリーンバッファのハンドルだけであるが、WriteFile 関数には他のハンドル(ファイルやパイプなど)も渡すことができる。WriteConsole 関

    数は、コンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗する。
    WriteConsole 関数の ANSI モードを使って ANSI 文字を書き込むことはできるが、コンソールは ANSI エスケープシーケンスをサポートしな

    い。同等の機能は、SetCursorPos、SetConsoleTextAttribute、GetConsoleCursorInf などの一部の Win32 関数が提供する。
    WriteConsole 関数は、スクリーンバッファの現在の位置に文字を書き込む。文字を書き込むたびにカーソルの位置が進む。現在のカーソル

    位置を設定するときは、SetConsoleCursorPosition 関数を使う。
    文字を書き込むときは、スクリーンバッファに設定されている前景色と背景色の属性が使われる。これらの色を変更するには、

    SetConsoleTextAttribute 関数を使う。現在の色属性と現在のカーソル位置を調べるには、GetConsoleScreenBufferInfo 関数を使う。
    WriteFile 関数の動作に影響を与える入力モードはすべて WriteConsole 関数にも同じ影響を与える。コンソールスクリーンバッファの出力

    モードの取得と設定は、それぞれ GetConsoleMode 関数と SetConsoleMode 関数を使って行う。
    Windows NT/2000:この関数は、コンソールの現在のコードページにある Unicode 文字または 8 ビット文字のいずれかを使う。コンソール

    のコードページは、既定値でシステムの OEM コードページに初期設定される。コンソールのコードページを変更するには、SetConsoleCP 関

    数、SetConsoleOutputCP 関数、chcp コマンド、mode con cp select= コマンドのいずれかを使う。