<Return[S]><Top>

SetConsoleMode

Declare Function Api_SetConsoleMode& Lib "kernel32" Alias "SetConsoleMode" (ByVal hConsoleHandle&, ByVal dwMode&)

Declare Function SetConsoleMode Lib "kernel32" Alias "SetConsoleMode" (ByVal hConsoleHandle As Long, ByVal dwMode As Long) As Long

コンソール入力バッファの入力モード、またはコンソールスクリーンバッファの出力モードを設定する。

パラメータ
hConsoleHandle
    コンソール入力バッファまたはスクリーンバッファのハンドルを指定する。このハンドルには、GENERIC_WRITE アクセス権が必要である。
dwMode
    入力モードまたは出力モードの新しい設定値を指定する。hConsoleHandle に入力ハンドルを指定した場合は、次の定数の組み合わせを

    指定する。コンソールの作成時、既定値で ENABLE_WINDOW_INPUT を除くすべての入力モードが有効になる。

    定数                                            

意味                                                                                                       

    ENABLE_LINE_INPUT

 

ReadFile 関数または ReadConsole 関数はキャリッジリターン文字を読み取ったときだけ制御を戻す。このモードが無効な場合、これらの関数は 1 つ以上の文字を読み取ると制御を戻す。

    ENABLE_ECHO_INPUT

 

 

ReadFile 関数または ReadConsole 関数で文字を読み取るたびにその文字がアクティブなスクリーンバッファに書き込まれる。このモードを有効にできるのは、ENABLE_LINE_INPUT モードが有効な場合だけである。

    ENABLE_PROCESSED_INPUT

 

 

 

CTRL+C がシステムによって処理され、入力バッファに格納されない。ReadFile 関数または ReadConsole 関数で入力バッファの読み取りを行う場合、他の制御キーはシステムによって処理され、ReadFile 関数または ReadConsole 関数のバッファに返されない。ENABLE_LINE_INPUT モードも有効になっている場合は、バックスペース文字、キャリッジリターン文字、ラインフィード文字がシステムによって処理される。

    ENABLE_WINDOW_INPUT

 

 

コンソールスクリーンバッファのサイズを変更するためのユーザーとの対話がコンソールの入力バッファに報告される。これらのイベントに関する情報は、ReadConsoleInput 関数を使って入力バッファから読み取ることができる。しかし、ReadFile 関数または ReadConsole 関数を使って読み取ることはできない。

    ENABLE_MOUSE_INPUT

 

 

マウスポインタがコンソールウィンドウの境界内にあり、ウィンドウがキーボードフォーカスを持っている場合、マウスを移動したりマウスボタンを押すことによって生成されるマウスイベントが入力バッファに置かれる。これらのイベントは、このモードが有効な場合でも、ReadFile 関数や ReadConsole 関数によって破棄される。

    hConsoleHandle にスクリーンバッファのハンドルを指定した場合は、lpMode に次の値の組み合わせを指定する。スクリーンバッファの作成

    時、既定値で 2 つの出力モードがともに有効になる。

    定数                                               

意味                                                                                                       

    ENABLE_PROCESSED_OUTPUT

 

 

WriteFile 関数または WriteConsole 関数で書き込む文字、ReadFile 関数または ReadConsole 関数でエコーする文字が ASCII チェック文字かどうか解析され、正しい動作が実行される。バックスペース文字、タブ文字、ベル文字、キャリッジリターン文字、ラインフィード文字が処理される。

    ENABLE_WRAP_AT_EOL_OUTPUT

 

 

 

 

WriteFile 関数または WriteConsole 関数で書き込みをするとき、あるいは ReadFile 関数または ReadConsole 関数でエコーをするとき、カーソルが現在の行の終端に到達すると次の行の先頭に移動する。カーソルがウィンドウの最後の行から次の行に進むとき、コンソールウィンドウに表示されている行が自動的に上にスクロールする。また、カーソルがスクリーンバッファの最後の行から次の行に進むとき、スクリーンバッファの内容が上にスクロールする(スクリーンバッファの一番上の行が破棄される)。このモードが無効になっていると、行の最後の文字にそれ以降の文字が上書きされる。


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

解説
    1 つのコンソールは、1 つの入力バッファと 1 つ以上のスクリーンバッファから構成される。コンソールバッファのモードは、入出力(I/O)操作中

    のコンソールの動作を決定する。入力ハンドルとスクリーンバッファのハンドル(出力ハンドル)のぞれぞれに 1 セットずつのフラグ定数が使われ

    る。特定のスクリーンバッファの出力モードが他のスクリーンバッファの出力モードに影響することはない。
    ENABLE_LINE_INPUT モードと ENABLE_ECHO_INPUT モードは、ReadFile 関数または ReadConsole 関数を使ってコンソール入力

    バッファから読み取りを行うプロセスにだけ影響する。同様に、ENABLE_PROCESSED_INPUT モードは主に ReadFile 関数または

    ReadConsole 関数を使うプロセスに影響する。このモードはまた、CTRL+C の入力が入力バッファで報告されるか(ReadConsoleInput 関数

    によって読み取ることができるか)、アプリケーションで定義した関数に渡されるかも決定する。
    ENABLE_WINDOW_INPUT モードと ENABLE_MOUSE_INPUT モードは、ウィンドウのサイズ変更に関連するユーザーとの対話とマ

    ウスの動作が報告されるか、破棄されるかを決定する。これらのイベントは、ReadConsoleInput 関数で読み取ることができるが、ReadFile

    関数や ReadConsole 関数では常にフィルタにかけられる。
    ENABLE_PROCESSED_OUTPUT モードと ENABLE_WRAP_AT_EOL_OUTPUT モードは、ReadFile 関数または ReadConsole 関

    数を使うプロセス、WriteFile 関数または WriteConsole 関数を使うプロセスにだけ影響する。