<Return[R]><Top>

ReadConsole

Declare Function Api_ReadConsole& Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput&, ByVal lpBuffer$, ByVal nNumberOfCharsToRead&, lpNumberOfCharsRead&, lpReserved As Any)

Declare Function ReadConsole Lib "kernel32" Alias "ReadConsoleA" (ByVal hConsoleInput As Long, ByVal lpBuffer As String, ByVal nNumberOfCharsToRead As Long, lpNumberOfCharsRead As Long, lpReserved As Any) As Long

コンソール入力バッファから文字入力を読み取り、読み取った文字をバッファから削除する。

パラメータ
hConsoleInput
    コンソール入力バッファのハンドルを指定する。このハンドルには、GENERIC_READ アクセス権が必要である。
lpBuffer
    コンソール入力バッファから読み取ったデータを受け取るバッファへのポインタを指定する。
nNumberOfCharsToRead
    読み取る文字数を指定する。この関数は 2 バイトの Unicode 文字、1 バイトの ANSI 文字のどちらでも読み取ることができるため、

    lpBuffer が指すバッファのサイズは少なくとも nNumberOfCharsToRead * sizeof(TCHAR)にする。
lpNumberOfCharsRead
    実際に読み取った文字数を受け取る 32 ビット変数へのポインタを指定する。
lpReserved
    予約済み。必ず NULL を指定する。

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

解説
    ReadConsole 関数は、コンソールの入力バッファからキーボード入力を読み取る。ReadFile 関数に似た動作をするが、ReadConsole 関数

    は Unicode(ワイド文字)と ANSI モードのどちらのモードでも読み取りが可能である。アプリケーションで両方のモードと互換性のある入力元

    を 1 セットだけ保持したい場合は、ReadFile 関数ではなく ReadConsole 関数を使う。ReadConsole 関数に渡すことができるのは、コンソー

    ル入力バッファのハンドルだけである。ReadFile 関数には他のハンドル(ファイルやパイプなど)も渡すことができる。ReadConsole 関数は、コ

    ンソールハンドル以外にリダイレクトされている標準ハンドルを渡すと失敗する。
    ReadFile 関数の動作に影響を与える入力モードはすべて ReadConsole 関数にも同じ影響を与える。コンソール入力バッファの入力モードの

    取得と設定は、それぞれ GetConsoleMode 関数と SetConsoleMode 関数を使って行う。
    入力バッファにキーボードイベント以外の入力イベント(マウスイベントやウィンドウサイズ変更イベントなど)が入っていると、それらは破棄され

    る。キーボード以外の入力イベントを読み取るには、ReadConsoleInput 関数を使う必要がある。
    Windows NT/2000:この関数は、コンソールの現在のコードページにある Unicode 文字または 8 ビット文字のいずれかを使う。コンソール

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

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