SetConsoleMode 함수
콘솔 입력 버퍼의 입력 모드 또는 콘솔 화면 버퍼의 출력 모드를 설정합니다.
BOOL WINAPI SetConsoleMode(
_In_ HANDLE hConsoleHandle,
_In_ DWORD dwMode
);
hConsoleHandle [in]
콘솔 입력 버퍼 또는 콘솔 화면 버퍼에 대한 핸들입니다. 핸들에는 GENERIC_READ 액세스 권한이 있어야 합니다. 자세한 내용은 콘솔 버퍼 보안 및 액세스 권한을 참조하세요.
dwMode [in]
설정할 입력 또는 출력 모드입니다.
hConsoleHandle 매개 변수가 입력 핸들이면 모드가 다음 값 중 하나 이상일 수 있습니다. 콘솔이 만들어지면 기본적으로 ENABLE_WINDOW_INPUT 및 ENABLE_VIRTUAL_TERMINAL_INPUT을 제외한 모든 입력 모드가 사용하도록 설정됩니다.
값 | 의미 |
---|---|
ENABLE_ECHO_INPUT 0x0004 | ReadFile 또는 ReadConsole 함수에서 읽은 문자는 콘솔에 입력될 때 활성 화면 버퍼에 쓰여집니다. ENABLE_LINE_INPUT 모드도 사용하도록 설정한 경우에만 이 모드를 사용할 수 있습니다. |
ENABLE_INSERT_MODE 0x0020 | 이 모드를 사용하도록 설정하면 콘솔 창에 입력된 텍스트를 현재 커서 위치에 삽입하고 해당 위치 뒤에 오는 모든 텍스트를 덮어쓰지 않습니다. 이 모드를 사용하지 않도록 설정하면 뒤에 오는 모든 텍스트를 덮어씁니다. |
ENABLE_LINE_INPUT 0x0002 | 캐리지 리턴 문자를 읽은 경우에만 ReadFile 또는 ReadConsole 함수가 반환됩니다. 이 모드를 사용하지 않도록 설정하면 하나 이상의 문자를 사용할 수 있을 때 함수가 반환됩니다. |
ENABLE_MOUSE_INPUT 0x0010 | 마우스 포인터가 콘솔 창의 테두리 내에 있고 키보드 포커스가 창에 있으면 마우스 이동 및 단추 누름으로 생성된 마우스 이벤트가 입력 버퍼에 배치됩니다. 이 모드를 사용하도록 설정한 경우에도 이러한 이벤트는 ReadFile 또는 ReadConsole에서 삭제됩니다. ReadConsoleInput 함수를 사용하여 입력 버퍼에서 MOUSE_EVENT 입력 레코드를 읽을 수 있습니다. |
ENABLE_PROCESSED_INPUT 0x0001 | CTRL+C가 시스템에서 처리되며 입력 버퍼에 배치되지 않습니다. ReadFile 또는 ReadConsole에서 입력 버퍼를 읽으면 다른 제어 키가 시스템에서 처리되며 ReadFile 또는 ReadConsole 버퍼에서 반환되지 않습니다. ENABLE_LINE_INPUT 모드도 사용하도록 설정하면 백스페이스, 캐리지 리턴 및 줄 바꿈 문자가 시스템에서 처리됩니다. |
ENABLE_QUICK_EDIT_MODE 0x0040 | 이 플래그를 사용하면 사용자가 마우스를 사용하여 텍스트를 선택하고 편집할 수 있습니다. 이 모드를 사용하도록 설정하려면 ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS 를 사용합니다. 이 모드를 사용하지 않도록 설정하려면 이 플래그 없이 ENABLE_EXTENDED_FLAGS를 사용합니다. |
ENABLE_WINDOW_INPUT 0x0008 | 콘솔 화면 버퍼의 크기를 변경하는 사용자 상호 작용이 콘솔의 입력 버퍼에 보고됩니다. 이러한 이벤트에 대한 정보는 ReadConsoleInput 함수를 사용하는 애플리케이션에서 입력 버퍼로부터 읽을 수 있지만, ReadFile 또는 ReadConsole을 사용하는 애플리케이션에서는 읽을 수 없습니다. |
ENABLE_VIRTUAL_TERMINAL_INPUT 0x0200 | 이 플래그를 설정하면 콘솔 창에서 받은 사용자 입력을 ReadFile 또는 ReadConsole 함수를 통해 지원 애플리케이션에서 검색할 수 있는 콘솔 가상 터미널 시퀀스로 변환하도록 가상 터미널 처리 엔진에 지시합니다. 이 플래그의 일반적인 용도는 출력 핸들의 ENABLE_VIRTUAL_TERMINAL_PROCESSING과 함께 가상 터미널 시퀀스를 통해서만 통신하는 애플리케이션에 연결하기 위한 것입니다. |
hConsoleHandle 매개 변수가 화면 버퍼 핸들이면 모드가 다음 값 중 하나 이상일 수 있습니다. 화면 버퍼가 만들어지면 기본적으로 두 출력 모드를 모두 사용하도록 설정됩니다.
값 | 의미 |
---|---|
ENABLE_PROCESSED_OUTPUT 0x0001 | WriteFile 또는 WriteConsole 함수에서 쓰거나 ReadFile 또는 ReadConsole 함수에서 에코하는 문자는 ASCII 제어 시퀀스에 대해 구문 분석되고 올바른 작업이 수행됩니다. 백스페이스, 탭, 벨, 캐리지 리턴 및 줄 바꿈 문자가 처리됩니다. 컨트롤 시퀀스를 사용하거나 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을 설정하고 텍스트가 줄 끝에 도달하면 커서가 다음 줄로 즉시 이동하고 버퍼의 내용이 한 줄 위로 스크롤됩니다. 이 플래그 집합과 달리 커서가 다음 줄로 이동하지 않고 스크롤 작업이 수행되지 않습니다. 쓰인 문자는 줄의 마지막 위치에 출력되고, 커서는 ENABLE_WRAP_AT_EOL_OUTPUT이 해제된 것처럼 이 문자 위에 남아 있지만, 다음 출력 가능한 문자는 ENABLE_WRAP_AT_EOL_OUTPUT이 설정된 것처럼 출력됩니다. 덮어쓰기는 발생하지 않습니다. 특히 커서가 다음 줄로 빠르게 이동하고, 필요한 경우 스크롤이 수행되며, 문자가 출력되고, 커서가 한 위치 더 이동합니다. 이 플래그의 일반적인 용도는 ENABLE_VIRTUAL_TERMINAL_PROCESSING 설정과 함께 스크롤을 즉각 트리거하지 않고 화면(../오른쪽 아래 모서리에서)에 최종 문자를 쓰는 작업이 필요한 동작인 터미널 에뮬레이터를 더 효율적으로 에뮬레이션하기 위한 것입니다. |
ENABLE_LVB_GRID_WORLDWIDE 0x0010 | WriteConsoleOutput 및 WriteConsoleOutputAttribute를 포함한 문자 특성을 쓰는 API를 사용하면 문자 특성의 플래그를 사용하여 텍스트의 전경색과 배경색을 조정할 수 있습니다. 또한 다양한 DBCS 플래그가 COMMON_LVB 접두사를 사용하여 지정되었습니다. 지금까지 이러한 플래그는 한국어, 중국어 및 일본어용 DBCS 코드 페이지에서만 작동했습니다. 선행 및 후행 바이트 플래그를 제외하고, 선 그리기와 역방향 비디오(../전경색 및 배경색 바꾸기)를 설명하는 나머지 플래그는 다른 언어에서 출력의 일부를 강조하는 데 유용할 수 있습니다. 이 콘솔 모드 플래그를 설정하면 이러한 특성을 모든 언어의 모든 코드 페이지에서 사용할 수 있습니다. 비 CJK 컴퓨터에서 이러한 플래그를 무시하여 비트를 자체적인 목적으로 또는 실수로 이러한 필드에 저장하는 콘솔을 지금까지 활용해 왔던 알려진 애플리케이션과의 호환성을 유지하는 것은 기본적으로 해제되어 있습니다. ENABLE_VIRTUAL_TERMINAL_PROCESSING 모드를 사용하면 연결된 애플리케이션에서 콘솔 가상 터미널 시퀀스를 통해 밑줄 또는 역방향 비디오를 요청하는 경우 이 플래그가 여전히 해제된 상태에서 LVB 그리드 및 역방향 비디오 플래그를 설정할 수 있습니다. |
함수가 성공하면 반환 값이 0이 아닙니다.
함수가 실패하면 반환 값은 0입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
콘솔은 입력 버퍼 및 하나 이상의 화면 버퍼로 구성됩니다. 콘솔 버퍼의 모드는 I/O(입력 또는 출력) 작업 중에 콘솔이 작동하는 방식을 결정합니다. 하나의 플래그 상수 집합은 입력 핸들에 사용되고, 다른 집합은 화면 버퍼(출력) 핸들에 사용됩니다. 한 화면 버퍼의 출력 모드를 설정해도 다른 화면 버퍼의 출력 모드에는 영향을 주지 않습니다.
ENABLE_LINE_INPUT 및 ENABLE_ECHO_INPUT 모드는 ReadFile 또는 ReadConsole을 사용하여 콘솔의 입력 버퍼에서 읽는 프로세스에만 영향을 줍니다. 마찬가지로 ENABLE_PROCESSED_INPUT 모드는 CTRL+C 입력이 입력 버퍼에 보고하는지(ReadConsoleInput 함수에서 읽음), 아니면 애플리케이션에서 정의한 함수에 전달하는지 여부도 결정한다는 것을 제외하고는 주로 ReadFile 및 ReadConsole 사용자에게 영향을 줍니다.
ENABLE_WINDOW_INPUT 및 ENABLE_MOUSE_INPUT 모드는 창 크기 조정 및 마우스 작업과 관련된 사용자 상호 작용을 입력 버퍼에 보고하는지, 아니면 삭제할지를 결정합니다. 이러한 이벤트는 ReadConsoleInput에서 읽을 수 있지만, 항상 ReadFile 및 ReadConsole에서 필터링합니다.
ENABLE_PROCESSED_OUTPUT 및 ENABLE_WRAP_AT_EOL_OUTPUT 모드는 ReadFile 또는 ReadConsole 및 WriteFile 또는 WriteConsole을 사용하는 프로세스에만 영향을 줍니다.
콘솔 입력 버퍼 또는 화면 버퍼의 현재 모드를 확인하려면 GetConsoleMode 함수를 사용합니다.
예제는 입력 버퍼 이벤트 읽기를 참조하세요.
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
헤더 | ConsoleApi.h(WinCon.h를 통해, Windows.h 포함) |
라이브러리 | Kernel32.lib |
DLL | Kernel32.dll |