SetConsoleMode 関数

コンソールの入力バッファーの入力モードまたはコンソールの画面バッファーの出力モードを設定します。

構文

BOOL WINAPI SetConsoleMode(
  _In_ HANDLE hConsoleHandle,
  _In_ DWORD  dwMode
);

パラメーター

hConsoleHandle [in]
コンソール入力バッファーまたはコンソール画面バッファーのハンドル。 ハンドルには、GENERIC_READ アクセス権があります。 詳細については、「コンソール バッファーのセキュリティとアクセス権」を参照してください。

dwMode [in]
設定する入力または出力のモード。

hConsoleHandle パラメーターが入力ハンドルの場合、モードは次の値のいずれかまたは複数になります。 コンソールが作成されると、ENABLE_WINDOW_INPUTENABLE_VIRTUAL_TERMINAL_INPUT を除くすべての入力モードが既定で有効になります。

Value 意味
ENABLE_ECHO_INPUT 0x0004 ReadFile または ReadConsole 関数によって読み取られた文字は、コンソールに入力されたときにアクティブな画面バッファーに書き込まれます。 このモードは、ENABLE_LINE_INPUT モードも有効な場合にのみ使用できます。
ENABLE_INSERT_MODE 0x0020 有効にすると、コンソール ウィンドウに入力されたテキストは現在のカーソル位置に挿入され、その位置以降のすべてのテキストは上書きされません。 無効にすると、以降のすべてのテキストは上書きされます。
ENABLE_LINE_INPUT 0x0002 ReadFile または ReadConsole 関数は、復帰文字が読み取られた場合にのみ戻ります。 このモードが無効になっている場合、使用できる文字が 1 つ以上あると、関数は戻ります。
ENABLE_MOUSE_INPUT 0x0010 マウス ポインターがコンソール ウィンドウの境界内にあり、ウィンドウにキーボード フォーカスがある場合、マウスの移動とボタンの押下によって生成されたマウス イベントが入力バッファーに格納されます。 これらのイベントは、このモードが有効な場合でも、ReadFile または ReadConsole によって破棄されます。 ReadConsoleInput 関数を使用して、入力バッファーから MOUSE_EVENT 入力レコードを読み取ることができます。
ENABLE_PROCESSED_INPUT 0x0001 Ctrl + C キーはシステムによって処理され、入力バッファーには格納されません。 入力バッファーが ReadFile または ReadConsole によって読み取られている場合、他の Ctrl キーはシステムによって処理され、ReadFile または ReadConsole バッファーには返されません。 ENABLE_LINE_INPUT モードも有効な場合、BackSpace、復帰、および改行の各文字はシステムによって処理されます。
ENABLE_QUICK_EDIT_MODE 0x0040 このフラグを使用すると、ユーザーはマウスを使用してテキストを選択および編集できるようになります。 このモードを有効にするには、ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS を使用します。 このモードを無効にするには、このフラグを使用せず、ENABLE_EXTENDED_FLAGS を使用します。
ENABLE_WINDOW_INPUT 0x0008 コンソール画面バッファーのサイズを変更するユーザー操作は、コンソールの入力バッファーに報告されます。 アプリケーションを使用してこれらのイベントに関する情報を入力バッファーから読み取るには、ReadFile または ReadConsole ではなく、ReadConsoleInput 関数を使用します。
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 このフラグを設定すると、仮想ターミナル処理エンジンにより、コンソール ウィンドウで受信したユーザー入力はコンソール仮想ターミナル シーケンスに変換されます。これは、サポートするアプリケーションから ReadFile または ReadConsole 関数を使用して取得できます。

このフラグの一般的な使用方法として、出力ハンドルに対する ENABLE_VIRTUAL_TERMINAL_PROCESSING と組み合わせて、仮想ターミナル シーケンス経由でのみ通信するアプリケーションに接続することが意図されています。

hConsoleHandle パラメーターが画面バッファー ハンドルの場合、モードは次の値のいずれかまたは複数になります。 画面バッファーが作成されると、両方の出力モードが既定で有効になります。

Value 意味
ENABLE_PROCESSED_OUTPUT 0x0001 WriteFile または WriteConsole 関数によって書き込まれた文字、または ReadFile または ReadConsole 関数によってエコーされた文字は、ASCII 制御シーケンスのために解析され、正しいアクションが実行されます。 BackSpace、Tab、ベル、復帰、および改行の各文字が処理されます。 制御シーケンスの使用時、または ENABLE_VIRTUAL_TERMINAL_PROCESSING が設定されているときに有効にすることをお勧めします。
ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 WriteFile または WriteConsole を使用して書き込む場合、または ReadFile または ReadConsole を使用してエコーする場合、現在の行の末尾に達すると、カーソルは次の行の先頭に移動されます。 これにより、カーソルがウィンドウの最後の行を超えると、コンソール ウィンドウに表示される行は自動的に上にスクロールされます。 また、カーソルがコンソール画面バッファーの最後の行を超えると、コンソール画面バッファーの内容は上にスクロールされます (またはコンソール画面バッファーの一番上の行が破棄されます)。 このモードが無効になっている場合、行の最後の文字は後続の文字で上書きされます。
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 WriteFile または WriteConsole を使用して書き込む場合、文字は、VT100 および同様の制御文字シーケンス (カーソルの移動、色またはフォントのモード、および既存のコンソール API を介して実行できるその他の操作を制御するもの) のために解析されます。 詳細については、「コンソール仮想ターミナル シーケンス」を参照してください。
このフラグを使用するときは、ENABLE_PROCESSED_OUTPUT が設定されていることを確認してください。
DISABLE_NEWLINE_AUTO_RETURN 0x0008 WriteFile または WriteConsole を使用して書き込む場合、これにより行末の折り返しに状態が追加され、カーソルの移動とバッファーのスクロール操作が遅れる可能性があります。

通常、ENABLE_WRAP_AT_EOL_OUTPUT が設定され、テキストが行の末尾に達すると、カーソルはすぐに次の行に移動され、バッファーの内容は 1 行上にスクロールされます。 このフラグとは対照的に、カーソルは次の行に移動せず、スクロール操作は実行されません。 書き込まれた文字は行の最終的な位置に出力され、ENABLE_WRAP_AT_EOL_OUTPUT がオフの場合と同様にカーソルはこの文字の上のままですが、ENABLE_WRAP_AT_EOL_OUTPUT がオンである場合と同様に、次の出力可能な文字は出力されます。 上書きは行われません。 具体的には、カーソルは次の行にすばやく移動され、必要に応じてスクロールが実行され、文字が出力され、カーソルはもう 1 つ先の位置に移動されます。

このフラグの一般的な使用法として、ENABLE_VIRTUAL_TERMINAL_PROCESSING の設定と組み合わせて、ターミナル エミュレーターをより適切にエミュレートすることが意図されています。この場合、即時スクロールをトリガーせずに、画面 (右下隅) に最後の文字を書き込むことが望ましい動作です。
ENABLE_LVB_GRID_WORLDWIDE 0x0010 WriteConsoleOutputWriteConsoleOutputAttribute などの文字属性を書き込むための API を使用すると、文字属性のフラグを使用してテキストの前景と背景の色を調整できます。 さらに、COMMON_LVB プレフィックスを使用して DBCS フラグの範囲が指定されました。 従来、これらのフラグは、中国語、日本語、および韓国語の DBCS コード ページでのみ機能していました。

先頭バイトと末尾バイトのフラグを除く、線の描画と反転ビデオ (前景色と背景色を入れ替えるもの) を記述するその他のフラグは、他の言語で出力の一部を強調する場合に役立ちます。

このコンソール モード フラグを設定すると、これらの属性をすべての言語のすべてのコード ページで使用できるようになります。

これは既定でオフになっています。非 CJK マシンでこれらのフラグを無視してコンソールを利用して、故意または偶然にこれらのフィールドにビットを格納してきた既知のアプリケーションとの互換性を維持するためです。

ENABLE_VIRTUAL_TERMINAL_PROCESSING モードを使用すると、接続されたアプリケーションからコンソール仮想ターミナル シーケンスを介して下線または反転ビデオが要求される場合、このフラグがまだオフのときに、LVB グリッドと反転ビデオのフラグが設定される可能性があることに注意してください。

戻り値

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

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

解説

コンソールは、1 つの入力バッファーと 1 つ以上の画面バッファーで構成されます。 コンソール バッファーのモードによって、入力または出力 (I/O) 操作中にコンソールがどのように動作するかが決まります。 1 つのフラグ定数セットが入力ハンドルと共に使用され、別のセットが画面バッファー (出力) ハンドルと共に使用されます。 1 つの画面バッファーの出力モードの設定が、他の画面バッファーの出力モードに影響することはありません。

ENABLE_LINE_INPUTENABLE_ECHO_INPUT モードは、ReadFile または ReadConsole を使用してコンソールの入力バッファーから読み取りを行うプロセスにのみ影響します。 同様に、 ENABLE_PROCESSED_INPUT モードは、主に ReadFileReadConsole のユーザーに影響を与えますが、それは、Ctrl + C 入力が (ReadConsoleInput 関数によって読み取られる) 入力バッファーに報告されるかどうか、またはアプリケーションによって定義された関数に渡されるかも決定する点が異なります。

ENABLE_WINDOW_INPUTENABLE_MOUSE_INPUT モードは、ウィンドウのサイズ変更とマウス操作を伴うユーザーの操作が入力バッファーに報告されるか破棄されるかを決定します。 これらのイベントを ReadConsoleInput で読み取ることができますが、常に ReadFileReadConsole によってフィルター処理されます。

ENABLE_PROCESSED_OUTPUTENABLE_WRAP_AT_EOL_OUTPUTモードは、ReadFileReadConsoleWriteFile、 または WriteConsole を使用するプロセスにのみ影響します。

コンソールの入力バッファーまたは画面バッファーの現在のモードを確認するには、GetConsoleMode 関数を使用します。

例については、「入力バッファー イベントの読み取り」を参照してください。

要件

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

関連項目

コンソール関数

コンソール モード

GetConsoleMode

HandlerRoutine

ReadConsole

ReadConsoleInput

ReadFile

WriteConsole

WriteFile