ReadConsoleInput 関数
コンソール入力バッファーからデータを読み取り、バッファーから削除します。
構文
BOOL WINAPI ReadConsoleInput(
_In_ HANDLE hConsoleInput,
_Out_ PINPUT_RECORD lpBuffer,
_In_ DWORD nLength,
_Out_ LPDWORD lpNumberOfEventsRead
);
パラメーター
hConsoleInput [in]
コンソール入力バッファーへのハンドル。 ハンドルには、GENERIC_READ アクセス権があります。 詳細については、「コンソール バッファーのセキュリティとアクセス権」を参照してください。
lpBuffer [out]
入力バッファー データを受信する INPUT_RECORD 構造体の配列へのポインター。
nLength [in]
lpBuffer パラメーターが指す配列のサイズ (配列要素)。
lpNumberOfEventsRead [out]
読み込まれた入力レコードの数を受け取る変数へのポインター。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
nLength パラメーターで要求されたレコードの数がバッファーで使用可能なレコードの数を超えると、使用可能な数が読み取られます。 この関数は、少なくとも 1 つの入力レコードが読み取られるまで戻りません。
プロセスは、待機関数の 1 つでコンソール入力バッファー ハンドルを指定して、コンソール入力が未読かどうかを判断できます。 入力バッファーが空でない場合は、コンソール入力バッファー ハンドルの状態が通知されます。
コンソールの入力バッファー内の未読入力レコードの数を確認するには GetNumberOfConsoleInputEvents 関数を使用します。 未読レコードの数に影響を与えずにコンソール入力バッファーから入力レコードを読み取る場合は、PeekConsoleInput 関数を使用します。 コンソールの入力バッファー内のすべての未読レコードを破棄するには、FlushConsoleInputBuffer 関数を使用します。
この関数では、Unicode 文字またはコンソールの現在のコード ページの 8 ビット文字が使用されます。 コンソールのコード ページには、最初はシステムの OEM コード ページが既定で設定されます。 コンソールのコード ページを変更するには、SetConsoleCP または SetConsoleOutputCP 関数を使用します。 従来のユーザーは、chcp または mode con cp select= コマンドを使用することもできますが、それは新規の開発ではお勧めできません。
例
例については、「入力バッファー イベントの読み取り」を参照してください。
要件
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
ヘッダー | ConsoleApi.h (WinCon.h 経由、Windows.h をインクルード) |
ライブラリ | Kernel32.lib |
[DLL] | Kernel32.dll |
Unicode 名と ANSI 名 | ReadConsoleInputW (Unicode) と ReadConsoleInputA (ANSI) |