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)

関連項目

コンソール関数

FlushConsoleInputBuffer

GetNumberOfConsoleInputEvents

INPUT_RECORD

低レベル コンソール入力関数

PeekConsoleInput

ReadConsole

ReadConsoleInputEx

ReadFile

SetConsoleCP

SetConsoleOutputCP

WriteConsoleInput