You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
899 lines
20 KiB
899 lines
20 KiB
/*++ BUILD Version: 0002 // Increment this if a change has global effects
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
wincon.h
|
|
|
|
Abstract:
|
|
|
|
This module contains the public data structures, data types,
|
|
and procedures exported by the NT console subsystem.
|
|
|
|
Created:
|
|
|
|
26-Oct-1990
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _WINCON_
|
|
#define _WINCON_
|
|
|
|
#ifndef _WINCONP_ ;internal_NT
|
|
#define _WINCONP_ ;internal_NT
|
|
;internal_NT
|
|
;begin_both
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
;end_both
|
|
|
|
typedef struct _COORD {
|
|
SHORT X;
|
|
SHORT Y;
|
|
} COORD, *PCOORD;
|
|
|
|
typedef struct _SMALL_RECT {
|
|
SHORT Left;
|
|
SHORT Top;
|
|
SHORT Right;
|
|
SHORT Bottom;
|
|
} SMALL_RECT, *PSMALL_RECT;
|
|
|
|
typedef struct _KEY_EVENT_RECORD {
|
|
BOOL bKeyDown;
|
|
WORD wRepeatCount;
|
|
WORD wVirtualKeyCode;
|
|
WORD wVirtualScanCode;
|
|
union {
|
|
WCHAR UnicodeChar;
|
|
CHAR AsciiChar;
|
|
} uChar;
|
|
DWORD dwControlKeyState;
|
|
} KEY_EVENT_RECORD, *PKEY_EVENT_RECORD;
|
|
|
|
//
|
|
// ControlKeyState flags
|
|
//
|
|
|
|
#define RIGHT_ALT_PRESSED 0x0001 // the right alt key is pressed.
|
|
#define LEFT_ALT_PRESSED 0x0002 // the left alt key is pressed.
|
|
#define RIGHT_CTRL_PRESSED 0x0004 // the right ctrl key is pressed.
|
|
#define LEFT_CTRL_PRESSED 0x0008 // the left ctrl key is pressed.
|
|
#define SHIFT_PRESSED 0x0010 // the shift key is pressed.
|
|
#define NUMLOCK_ON 0x0020 // the numlock light is on.
|
|
#define SCROLLLOCK_ON 0x0040 // the scrolllock light is on.
|
|
#define CAPSLOCK_ON 0x0080 // the capslock light is on.
|
|
#define ENHANCED_KEY 0x0100 // the key is enhanced.
|
|
#define NLS_DBCSCHAR 0x00010000 // DBCS for JPN: SBCS/DBCS mode.
|
|
#define NLS_ALPHANUMERIC 0x00000000 // DBCS for JPN: Alphanumeric mode.
|
|
#define NLS_KATAKANA 0x00020000 // DBCS for JPN: Katakana mode.
|
|
#define NLS_HIRAGANA 0x00040000 // DBCS for JPN: Hiragana mode.
|
|
#define NLS_ROMAN 0x00400000 // DBCS for JPN: Roman/Noroman mode.
|
|
#define NLS_IME_CONVERSION 0x00800000 // DBCS for JPN: IME conversion.
|
|
#define ALTNUMPAD_BIT 0x04000000 // AltNumpad OEM char (copied from ntuser\inc\kbd.h) ;internal_NT
|
|
#define NLS_IME_DISABLE 0x20000000 // DBCS for JPN: IME enable/disable.
|
|
|
|
typedef struct _MOUSE_EVENT_RECORD {
|
|
COORD dwMousePosition;
|
|
DWORD dwButtonState;
|
|
DWORD dwControlKeyState;
|
|
DWORD dwEventFlags;
|
|
} MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD;
|
|
|
|
//
|
|
// ButtonState flags
|
|
//
|
|
|
|
#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001
|
|
#define RIGHTMOST_BUTTON_PRESSED 0x0002
|
|
#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004
|
|
#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008
|
|
#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010
|
|
|
|
//
|
|
// EventFlags
|
|
//
|
|
|
|
#define MOUSE_MOVED 0x0001
|
|
#define DOUBLE_CLICK 0x0002
|
|
#define MOUSE_WHEELED 0x0004
|
|
|
|
typedef struct _WINDOW_BUFFER_SIZE_RECORD {
|
|
COORD dwSize;
|
|
} WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD;
|
|
|
|
typedef struct _MENU_EVENT_RECORD {
|
|
UINT dwCommandId;
|
|
} MENU_EVENT_RECORD, *PMENU_EVENT_RECORD;
|
|
|
|
typedef struct _FOCUS_EVENT_RECORD {
|
|
BOOL bSetFocus;
|
|
} FOCUS_EVENT_RECORD, *PFOCUS_EVENT_RECORD;
|
|
|
|
typedef struct _INPUT_RECORD {
|
|
WORD EventType;
|
|
union {
|
|
KEY_EVENT_RECORD KeyEvent;
|
|
MOUSE_EVENT_RECORD MouseEvent;
|
|
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
|
MENU_EVENT_RECORD MenuEvent;
|
|
FOCUS_EVENT_RECORD FocusEvent;
|
|
} Event;
|
|
} INPUT_RECORD, *PINPUT_RECORD;
|
|
|
|
//
|
|
// EventType flags:
|
|
//
|
|
|
|
#define KEY_EVENT 0x0001 // Event contains key event record
|
|
#define MOUSE_EVENT 0x0002 // Event contains mouse event record
|
|
#define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record
|
|
#define MENU_EVENT 0x0008 // Event contains menu event record
|
|
#define FOCUS_EVENT 0x0010 // event contains focus change
|
|
|
|
typedef struct _CHAR_INFO {
|
|
union {
|
|
WCHAR UnicodeChar;
|
|
CHAR AsciiChar;
|
|
} Char;
|
|
WORD Attributes;
|
|
} CHAR_INFO, *PCHAR_INFO;
|
|
|
|
//
|
|
// Attributes flags:
|
|
//
|
|
|
|
#define FOREGROUND_BLUE 0x0001 // text color contains blue.
|
|
#define FOREGROUND_GREEN 0x0002 // text color contains green.
|
|
#define FOREGROUND_RED 0x0004 // text color contains red.
|
|
#define FOREGROUND_INTENSITY 0x0008 // text color is intensified.
|
|
#define BACKGROUND_BLUE 0x0010 // background color contains blue.
|
|
#define BACKGROUND_GREEN 0x0020 // background color contains green.
|
|
#define BACKGROUND_RED 0x0040 // background color contains red.
|
|
#define BACKGROUND_INTENSITY 0x0080 // background color is intensified.
|
|
#define COMMON_LVB_LEADING_BYTE 0x0100 // Leading Byte of DBCS
|
|
#define COMMON_LVB_TRAILING_BYTE 0x0200 // Trailing Byte of DBCS
|
|
#define COMMON_LVB_GRID_HORIZONTAL 0x0400 // DBCS: Grid attribute: top horizontal.
|
|
#define COMMON_LVB_GRID_LVERTICAL 0x0800 // DBCS: Grid attribute: left vertical.
|
|
#define COMMON_LVB_GRID_RVERTICAL 0x1000 // DBCS: Grid attribute: right vertical.
|
|
#define COMMON_LVB_REVERSE_VIDEO 0x4000 // DBCS: Reverse fore/back ground attribute.
|
|
#define COMMON_LVB_UNDERSCORE 0x8000 // DBCS: Underscore.
|
|
|
|
#define COMMON_LVB_SBCSDBCS 0x0300 // SBCS or DBCS flag.
|
|
|
|
|
|
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
|
|
COORD dwSize;
|
|
COORD dwCursorPosition;
|
|
WORD wAttributes;
|
|
SMALL_RECT srWindow;
|
|
COORD dwMaximumWindowSize;
|
|
} CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
|
|
|
|
typedef struct _CONSOLE_CURSOR_INFO {
|
|
DWORD dwSize;
|
|
BOOL bVisible;
|
|
} CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
|
|
|
|
typedef struct _CONSOLE_FONT_INFO {
|
|
DWORD nFont;
|
|
COORD dwFontSize;
|
|
} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
|
|
|
|
;begin_if_(_WIN32_WINNT)_500
|
|
typedef struct _CONSOLE_SELECTION_INFO {
|
|
DWORD dwFlags;
|
|
COORD dwSelectionAnchor;
|
|
SMALL_RECT srSelection;
|
|
} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
|
|
|
|
//
|
|
// Selection flags
|
|
//
|
|
|
|
#define CONSOLE_NO_SELECTION 0x0000
|
|
#define CONSOLE_SELECTION_IN_PROGRESS 0x0001 // selection has begun
|
|
#define CONSOLE_SELECTION_NOT_EMPTY 0x0002 // non-null select rectangle
|
|
#define CONSOLE_MOUSE_SELECTION 0x0004 // selecting with mouse
|
|
#define CONSOLE_MOUSE_DOWN 0x0008 // mouse is down
|
|
;begin_internal_NT
|
|
#define CONSOLE_SELECTION_INVERTED 0x0010 // selection is inverted (turned off)
|
|
#define CONSOLE_SELECTION_VALID (CONSOLE_SELECTION_IN_PROGRESS | \
|
|
CONSOLE_SELECTION_NOT_EMPTY | \
|
|
CONSOLE_MOUSE_SELECTION | \
|
|
CONSOLE_MOUSE_DOWN)
|
|
|
|
;end_internal_NT
|
|
;end_if_(_WIN32_WINNT)_500
|
|
|
|
//
|
|
// typedef for ctrl-c handler routines
|
|
//
|
|
|
|
typedef
|
|
BOOL
|
|
(WINAPI *PHANDLER_ROUTINE)(
|
|
DWORD CtrlType
|
|
);
|
|
|
|
#define CTRL_C_EVENT 0
|
|
#define CTRL_BREAK_EVENT 1
|
|
#define CTRL_CLOSE_EVENT 2
|
|
// 3 is reserved!
|
|
// 4 is reserved!
|
|
#define CTRL_LOGOFF_EVENT 5
|
|
#define CTRL_SHUTDOWN_EVENT 6
|
|
|
|
//
|
|
// Input Mode flags:
|
|
//
|
|
|
|
#define ENABLE_PROCESSED_INPUT 0x0001
|
|
#define ENABLE_LINE_INPUT 0x0002
|
|
#define ENABLE_ECHO_INPUT 0x0004
|
|
#define ENABLE_WINDOW_INPUT 0x0008
|
|
#define ENABLE_MOUSE_INPUT 0x0010
|
|
;begin_internal_NT
|
|
#define ENABLE_INSERT_MODE 0x0020
|
|
#define ENABLE_QUICK_EDIT_MODE 0x0040
|
|
#define ENABLE_PRIVATE_FLAGS 0x0080
|
|
;end_internal_NT
|
|
|
|
//
|
|
// Output Mode flags:
|
|
//
|
|
|
|
#define ENABLE_PROCESSED_OUTPUT 0x0001
|
|
#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
|
|
|
|
//
|
|
// direct API definitions.
|
|
//
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
PeekConsoleInput%(
|
|
IN HANDLE hConsoleInput,
|
|
OUT PINPUT_RECORD lpBuffer,
|
|
IN DWORD nLength,
|
|
OUT LPDWORD lpNumberOfEventsRead
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
ReadConsoleInput%(
|
|
IN HANDLE hConsoleInput,
|
|
OUT PINPUT_RECORD lpBuffer,
|
|
IN DWORD nLength,
|
|
OUT LPDWORD lpNumberOfEventsRead
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
WriteConsoleInput%(
|
|
IN HANDLE hConsoleInput,
|
|
IN CONST INPUT_RECORD *lpBuffer,
|
|
IN DWORD nLength,
|
|
OUT LPDWORD lpNumberOfEventsWritten
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
ReadConsoleOutput%(
|
|
IN HANDLE hConsoleOutput,
|
|
OUT PCHAR_INFO lpBuffer,
|
|
IN COORD dwBufferSize,
|
|
IN COORD dwBufferCoord,
|
|
IN OUT PSMALL_RECT lpReadRegion
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
WriteConsoleOutput%(
|
|
IN HANDLE hConsoleOutput,
|
|
IN CONST CHAR_INFO *lpBuffer,
|
|
IN COORD dwBufferSize,
|
|
IN COORD dwBufferCoord,
|
|
IN OUT PSMALL_RECT lpWriteRegion
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
ReadConsoleOutputCharacter%(
|
|
IN HANDLE hConsoleOutput,
|
|
OUT LPTSTR% lpCharacter,
|
|
IN DWORD nLength,
|
|
IN COORD dwReadCoord,
|
|
OUT LPDWORD lpNumberOfCharsRead
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
ReadConsoleOutputAttribute(
|
|
IN HANDLE hConsoleOutput,
|
|
OUT LPWORD lpAttribute,
|
|
IN DWORD nLength,
|
|
IN COORD dwReadCoord,
|
|
OUT LPDWORD lpNumberOfAttrsRead
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
WriteConsoleOutputCharacter%(
|
|
IN HANDLE hConsoleOutput,
|
|
IN LPCTSTR% lpCharacter,
|
|
IN DWORD nLength,
|
|
IN COORD dwWriteCoord,
|
|
OUT LPDWORD lpNumberOfCharsWritten
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
WriteConsoleOutputAttribute(
|
|
IN HANDLE hConsoleOutput,
|
|
IN CONST WORD *lpAttribute,
|
|
IN DWORD nLength,
|
|
IN COORD dwWriteCoord,
|
|
OUT LPDWORD lpNumberOfAttrsWritten
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
FillConsoleOutputCharacter%(
|
|
IN HANDLE hConsoleOutput,
|
|
IN TCHAR% cCharacter,
|
|
IN DWORD nLength,
|
|
IN COORD dwWriteCoord,
|
|
OUT LPDWORD lpNumberOfCharsWritten
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
FillConsoleOutputAttribute(
|
|
IN HANDLE hConsoleOutput,
|
|
IN WORD wAttribute,
|
|
IN DWORD nLength,
|
|
IN COORD dwWriteCoord,
|
|
OUT LPDWORD lpNumberOfAttrsWritten
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetConsoleMode(
|
|
IN HANDLE hConsoleHandle,
|
|
OUT LPDWORD lpMode
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetNumberOfConsoleInputEvents(
|
|
IN HANDLE hConsoleInput,
|
|
OUT LPDWORD lpNumberOfEvents
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetConsoleScreenBufferInfo(
|
|
IN HANDLE hConsoleOutput,
|
|
OUT PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo
|
|
);
|
|
|
|
WINBASEAPI
|
|
COORD
|
|
WINAPI
|
|
GetLargestConsoleWindowSize(
|
|
IN HANDLE hConsoleOutput
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetConsoleCursorInfo(
|
|
IN HANDLE hConsoleOutput,
|
|
OUT PCONSOLE_CURSOR_INFO lpConsoleCursorInfo
|
|
);
|
|
|
|
;begin_if_(_WIN32_WINNT)_500
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetCurrentConsoleFont(
|
|
IN HANDLE hConsoleOutput,
|
|
IN BOOL bMaximumWindow,
|
|
OUT PCONSOLE_FONT_INFO lpConsoleCurrentFont
|
|
);
|
|
|
|
WINBASEAPI
|
|
COORD
|
|
WINAPI
|
|
GetConsoleFontSize(
|
|
IN HANDLE hConsoleOutput,
|
|
IN DWORD nFont
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetConsoleSelectionInfo(
|
|
OUT PCONSOLE_SELECTION_INFO lpConsoleSelectionInfo
|
|
);
|
|
|
|
;end_if_(_WIN32_WINNT)_500
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetNumberOfConsoleMouseButtons(
|
|
OUT LPDWORD lpNumberOfMouseButtons
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleMode(
|
|
IN HANDLE hConsoleHandle,
|
|
IN DWORD dwMode
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleActiveScreenBuffer(
|
|
IN HANDLE hConsoleOutput
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
FlushConsoleInputBuffer(
|
|
IN HANDLE hConsoleInput
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleScreenBufferSize(
|
|
IN HANDLE hConsoleOutput,
|
|
IN COORD dwSize
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleCursorPosition(
|
|
IN HANDLE hConsoleOutput,
|
|
IN COORD dwCursorPosition
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleCursorInfo(
|
|
IN HANDLE hConsoleOutput,
|
|
IN CONST CONSOLE_CURSOR_INFO *lpConsoleCursorInfo
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
ScrollConsoleScreenBuffer%(
|
|
IN HANDLE hConsoleOutput,
|
|
IN CONST SMALL_RECT *lpScrollRectangle,
|
|
IN CONST SMALL_RECT *lpClipRectangle,
|
|
IN COORD dwDestinationOrigin,
|
|
IN CONST CHAR_INFO *lpFill
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleWindowInfo(
|
|
IN HANDLE hConsoleOutput,
|
|
IN BOOL bAbsolute,
|
|
IN CONST SMALL_RECT *lpConsoleWindow
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleTextAttribute(
|
|
IN HANDLE hConsoleOutput,
|
|
IN WORD wAttributes
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleCtrlHandler(
|
|
IN PHANDLER_ROUTINE HandlerRoutine,
|
|
IN BOOL Add
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GenerateConsoleCtrlEvent(
|
|
IN DWORD dwCtrlEvent,
|
|
IN DWORD dwProcessGroupId
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
AllocConsole( VOID );
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
FreeConsole( VOID );
|
|
|
|
;begin_if_(_WIN32_WINNT)_500
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
AttachConsole(
|
|
IN DWORD dwProcessId
|
|
);
|
|
|
|
#define ATTACH_PARENT_PROCESS ((DWORD)-1)
|
|
;end_if_(_WIN32_WINNT)_500
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
WINAPI
|
|
GetConsoleTitle%(
|
|
OUT LPTSTR% lpConsoleTitle,
|
|
IN DWORD nSize
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleTitle%(
|
|
IN LPCTSTR% lpConsoleTitle
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
ReadConsole%(
|
|
IN HANDLE hConsoleInput,
|
|
OUT LPVOID lpBuffer,
|
|
IN DWORD nNumberOfCharsToRead,
|
|
OUT LPDWORD lpNumberOfCharsRead,
|
|
IN LPVOID lpReserved
|
|
);
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
WriteConsole%(
|
|
IN HANDLE hConsoleOutput,
|
|
IN CONST VOID *lpBuffer,
|
|
IN DWORD nNumberOfCharsToWrite,
|
|
OUT LPDWORD lpNumberOfCharsWritten,
|
|
IN LPVOID lpReserved
|
|
);
|
|
|
|
#define CONSOLE_TEXTMODE_BUFFER 1
|
|
|
|
WINBASEAPI
|
|
HANDLE
|
|
WINAPI
|
|
CreateConsoleScreenBuffer(
|
|
IN DWORD dwDesiredAccess,
|
|
IN DWORD dwShareMode,
|
|
IN CONST SECURITY_ATTRIBUTES *lpSecurityAttributes,
|
|
IN DWORD dwFlags,
|
|
IN LPVOID lpScreenBufferData
|
|
);
|
|
|
|
WINBASEAPI
|
|
UINT
|
|
WINAPI
|
|
GetConsoleCP( VOID );
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleCP(
|
|
IN UINT wCodePageID
|
|
);
|
|
|
|
WINBASEAPI
|
|
UINT
|
|
WINAPI
|
|
GetConsoleOutputCP( VOID );
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
SetConsoleOutputCP(
|
|
IN UINT wCodePageID
|
|
);
|
|
|
|
;begin_if_(_WIN32_WINNT)_500
|
|
|
|
#define CONSOLE_FULLSCREEN 1 // fullscreen console
|
|
#define CONSOLE_FULLSCREEN_HARDWARE 2 // console owns the hardware
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
APIENTRY
|
|
GetConsoleDisplayMode(
|
|
OUT LPDWORD lpModeFlags
|
|
);
|
|
|
|
WINBASEAPI
|
|
HWND
|
|
APIENTRY
|
|
GetConsoleWindow(
|
|
VOID
|
|
);
|
|
|
|
;end_if_(_WIN32_WINNT)_500
|
|
|
|
;begin_if_(_WIN32_WINNT)_501
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
APIENTRY
|
|
GetConsoleProcessList(
|
|
OUT LPDWORD lpdwProcessList,
|
|
IN DWORD dwProcessCount);
|
|
|
|
//
|
|
// Aliasing apis.
|
|
//
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
APIENTRY
|
|
AddConsoleAlias%(
|
|
IN LPTSTR% Source,
|
|
IN LPTSTR% Target,
|
|
IN LPTSTR% ExeName);
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
APIENTRY
|
|
GetConsoleAlias%(
|
|
IN LPTSTR% Source,
|
|
OUT LPTSTR% TargetBuffer,
|
|
IN DWORD TargetBufferLength,
|
|
IN LPTSTR% ExeName);
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
APIENTRY
|
|
GetConsoleAliasesLength%(
|
|
IN LPTSTR% ExeName);
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
APIENTRY
|
|
GetConsoleAliasExesLength%(
|
|
VOID);
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
APIENTRY
|
|
GetConsoleAliases%(
|
|
OUT LPTSTR% AliasBuffer,
|
|
IN DWORD AliasBufferLength,
|
|
IN LPTSTR% ExeName);
|
|
|
|
WINBASEAPI
|
|
DWORD
|
|
APIENTRY
|
|
GetConsoleAliasExes%(
|
|
OUT LPTSTR% ExeNameBuffer,
|
|
IN DWORD ExeNameBufferLength);
|
|
|
|
;end_if_(_WIN32_WINNT)_501
|
|
|
|
;begin_internal_NT
|
|
|
|
WINBASEAPI
|
|
BOOL
|
|
WINAPI
|
|
GetConsoleKeyboardLayoutName%( OUT LPTSTR% );
|
|
|
|
//
|
|
// Registry strings
|
|
//
|
|
|
|
#define CONSOLE_REGISTRY_STRING (L"Console")
|
|
#define CONSOLE_REGISTRY_FONTSIZE (L"FontSize")
|
|
#define CONSOLE_REGISTRY_FONTFAMILY (L"FontFamily")
|
|
#define CONSOLE_REGISTRY_BUFFERSIZE (L"ScreenBufferSize")
|
|
#define CONSOLE_REGISTRY_CURSORSIZE (L"CursorSize")
|
|
#define CONSOLE_REGISTRY_WINDOWSIZE (L"WindowSize")
|
|
#define CONSOLE_REGISTRY_WINDOWPOS (L"WindowPosition")
|
|
#define CONSOLE_REGISTRY_FILLATTR (L"ScreenColors")
|
|
#define CONSOLE_REGISTRY_POPUPATTR (L"PopupColors")
|
|
#define CONSOLE_REGISTRY_FULLSCR (L"FullScreen")
|
|
#define CONSOLE_REGISTRY_QUICKEDIT (L"QuickEdit")
|
|
#define CONSOLE_REGISTRY_FACENAME (L"FaceName")
|
|
#define CONSOLE_REGISTRY_FONTWEIGHT (L"FontWeight")
|
|
#define CONSOLE_REGISTRY_INSERTMODE (L"InsertMode")
|
|
#define CONSOLE_REGISTRY_HISTORYSIZE (L"HistoryBufferSize")
|
|
#define CONSOLE_REGISTRY_HISTORYBUFS (L"NumberOfHistoryBuffers")
|
|
#define CONSOLE_REGISTRY_HISTORYNODUP (L"HistoryNoDup")
|
|
#define CONSOLE_REGISTRY_COLORTABLE (L"ColorTable%02u")
|
|
#define CONSOLE_REGISTRY_EXTENDEDEDITKEY L"ExtendedEditKey"
|
|
#define CONSOLE_REGISTRY_EXTENDEDEDITKEY_CUSTOM L"ExtendedEditkeyCustom"
|
|
#define CONSOLE_REGISTRY_WORD_DELIM L"WordDelimiters"
|
|
#define CONSOLE_REGISTRY_TRIMZEROHEADINGS L"TrimLeadingZeros"
|
|
#define CONSOLE_REGISTRY_LOAD_CONIME L"LoadConIme"
|
|
#define CONSOLE_REGISTRY_ENABLE_COLOR_SELECTION L"EnableColorSelection"
|
|
|
|
|
|
#if defined(FE_SB) // scotthsu
|
|
/*
|
|
* Starting code page
|
|
*/
|
|
#define CONSOLE_REGISTRY_CODEPAGE (L"CodePage")
|
|
#endif
|
|
|
|
#if defined(FE_SB)
|
|
//
|
|
// registry strings on HKEY_LOCAL_MACHINE
|
|
//
|
|
#define MACHINE_REGISTRY_CONSOLE (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console")
|
|
#define MACHINE_REGISTRY_CONSOLEIME (L"ConsoleIME")
|
|
|
|
|
|
#define MACHINE_REGISTRY_CONSOLE_TTFONT (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\TrueTypeFont")
|
|
|
|
|
|
#define MACHINE_REGISTRY_CONSOLE_NLS (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\Nls")
|
|
|
|
|
|
#define MACHINE_REGISTRY_CONSOLE_FULLSCREEN (L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Console\\FullScreen")
|
|
#define MACHINE_REGISTRY_INITIAL_PALETTE (L"InitialPalette")
|
|
#define MACHINE_REGISTRY_COLOR_BUFFER (L"ColorBuffer")
|
|
#define MACHINE_REGISTRY_COLOR_BUFFER_NO_TRANSLATE (L"ColorBufferNoTranslate")
|
|
#define MACHINE_REGISTRY_MODE_FONT_PAIRS (L"ModeFontPairs")
|
|
#define MACHINE_REGISTRY_FS_CODEPAGE (L"CodePage")
|
|
|
|
|
|
#define MACHINE_REGISTRY_EUDC (L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\Nls\\CodePage\\EUDCCodeRange")
|
|
|
|
|
|
//
|
|
// TrueType font list
|
|
//
|
|
|
|
// doesn't available bold when add BOLD_MARK on first of face name.
|
|
#define BOLD_MARK (L'*')
|
|
|
|
typedef struct _TT_FONT_LIST {
|
|
SINGLE_LIST_ENTRY List;
|
|
UINT CodePage;
|
|
BOOL fDisableBold;
|
|
TCHAR FaceName1[LF_FACESIZE];
|
|
TCHAR FaceName2[LF_FACESIZE];
|
|
} TTFONTLIST, *LPTTFONTLIST;
|
|
#endif // FE_SB
|
|
|
|
|
|
|
|
//
|
|
// State information structure
|
|
//
|
|
|
|
typedef struct _CONSOLE_STATE_INFO {
|
|
UINT Length;
|
|
COORD ScreenBufferSize;
|
|
COORD WindowSize;
|
|
INT WindowPosX;
|
|
INT WindowPosY;
|
|
COORD FontSize;
|
|
UINT FontFamily;
|
|
UINT FontWeight;
|
|
WCHAR FaceName[LF_FACESIZE];
|
|
UINT CursorSize;
|
|
BOOL FullScreen;
|
|
BOOL QuickEdit;
|
|
BOOL AutoPosition;
|
|
BOOL InsertMode;
|
|
WORD ScreenAttributes;
|
|
WORD PopupAttributes;
|
|
BOOL HistoryNoDup;
|
|
UINT HistoryBufferSize;
|
|
UINT NumberOfHistoryBuffers;
|
|
COLORREF ColorTable[ 16 ];
|
|
#if defined(FE_SB)
|
|
/*
|
|
* Startting code page
|
|
*/
|
|
UINT CodePage;
|
|
#endif // FE_SB
|
|
HWND hWnd;
|
|
WCHAR ConsoleTitle[1];
|
|
} CONSOLE_STATE_INFO, *PCONSOLE_STATE_INFO;
|
|
|
|
|
|
//
|
|
// Messages sent from properties applet to console server
|
|
//
|
|
|
|
#define CM_PROPERTIES_START (WM_USER+200)
|
|
#define CM_PROPERTIES_UPDATE (WM_USER+201)
|
|
#define CM_PROPERTIES_END (WM_USER+202)
|
|
|
|
|
|
//
|
|
// Extended Line Edit
|
|
//
|
|
|
|
#define EK_INVALID ' '
|
|
|
|
//
|
|
// Special key for previous word erase
|
|
//
|
|
#define EXTKEY_ERASE_PREV_WORD (0x7f)
|
|
|
|
|
|
//
|
|
// Ensure the alignment is WORD boundary
|
|
//
|
|
|
|
#include <pshpack2.h>
|
|
|
|
typedef struct {
|
|
WORD wMod;
|
|
WORD wVirKey;
|
|
WCHAR wUnicodeChar;
|
|
} ExtKeySubst;
|
|
|
|
typedef struct {
|
|
ExtKeySubst keys[3]; // 0: Ctrl
|
|
// 1: Alt
|
|
// 2: Ctrl+Alt
|
|
} ExtKeyDef;
|
|
|
|
typedef ExtKeyDef ExtKeyDefTable['Z' - 'A' + 1];
|
|
|
|
typedef struct {
|
|
DWORD dwVersion;
|
|
DWORD dwCheckSum;
|
|
ExtKeyDefTable table;
|
|
} ExtKeyDefBuf;
|
|
|
|
//
|
|
// Restore the previous alignment
|
|
//
|
|
|
|
#include <poppack.h>
|
|
|
|
|
|
;end_internal_NT
|
|
;begin_both
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
;end_both
|
|
#endif // _WINCONP_ ;internal_NT
|
|
#endif // _WINCON_
|