|
|
1.1 ! root 1: /*++ BUILD Version: 0002 // Increment this if a change has global effects ! 2: ! 3: Copyright (c) 1989 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: console.h ! 8: ! 9: Abstract: ! 10: ! 11: This module contains the public data structures, data types, ! 12: and procedures exported by the NT console subsystem. ! 13: ! 14: Created: ! 15: ! 16: 26-Oct-1990 ! 17: ! 18: Revision History: ! 19: ! 20: --*/ ! 21: ! 22: #ifndef _WINCON_ ! 23: #define _WINCON_ ! 24: ! 25: typedef struct _COORD { ! 26: SHORT X; ! 27: SHORT Y; ! 28: } COORD, *PCOORD; ! 29: ! 30: typedef struct _SMALL_RECT { ! 31: SHORT Left; ! 32: SHORT Top; ! 33: SHORT Right; ! 34: SHORT Bottom; ! 35: } SMALL_RECT, *PSMALL_RECT; ! 36: ! 37: typedef struct _KEY_EVENT_RECORD { ! 38: BOOL bKeyDown; ! 39: WORD wRepeatCount; ! 40: WORD wVirtualKeyCode; ! 41: WORD wVirtualScanCode; ! 42: union { ! 43: WCHAR UnicodeChar; ! 44: CHAR AsciiChar; ! 45: } uChar; ! 46: DWORD dwControlKeyState; ! 47: } KEY_EVENT_RECORD, *PKEY_EVENT_RECORD; ! 48: ! 49: // ! 50: // ControlKeyState flags ! 51: // ! 52: ! 53: #define RIGHT_ALT_PRESSED 0x0001 // the right alt key is pressed. ! 54: #define LEFT_ALT_PRESSED 0x0002 // the left alt key is pressed. ! 55: #define RIGHT_CTRL_PRESSED 0x0004 // the right ctrl key is pressed. ! 56: #define LEFT_CTRL_PRESSED 0x0008 // the left ctrl key is pressed. ! 57: #define SHIFT_PRESSED 0x0010 // the shift key is pressed. ! 58: #define NUMLOCK_ON 0x0020 // the numlock light is on. ! 59: #define SCROLLLOCK_ON 0x0040 // the scrolllock light is on. ! 60: #define CAPSLOCK_ON 0x0080 // the capslock light is on. ! 61: #define ENHANCED_KEY 0x0100 // the key is enhanced. ! 62: ! 63: typedef struct _MOUSE_EVENT_RECORD { ! 64: COORD dwMousePosition; ! 65: DWORD dwButtonState; ! 66: DWORD dwControlKeyState; ! 67: DWORD dwEventFlags; ! 68: } MOUSE_EVENT_RECORD, *PMOUSE_EVENT_RECORD; ! 69: ! 70: // ! 71: // ButtonState flags ! 72: // ! 73: ! 74: #define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 ! 75: #define RIGHTMOST_BUTTON_PRESSED 0x0002 ! 76: #define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004 ! 77: #define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008 ! 78: #define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010 ! 79: ! 80: // ! 81: // EventFlags ! 82: // ! 83: ! 84: #define MOUSE_MOVED 0x0001 ! 85: #define DOUBLE_CLICK 0x0002 ! 86: ! 87: typedef struct _WINDOW_BUFFER_SIZE_RECORD { ! 88: COORD dwSize; ! 89: } WINDOW_BUFFER_SIZE_RECORD, *PWINDOW_BUFFER_SIZE_RECORD; ! 90: ! 91: typedef struct _INPUT_RECORD { ! 92: WORD EventType; ! 93: union { ! 94: KEY_EVENT_RECORD KeyEvent; ! 95: MOUSE_EVENT_RECORD MouseEvent; ! 96: WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; ! 97: } Event; ! 98: } INPUT_RECORD, *PINPUT_RECORD; ! 99: ! 100: // ! 101: // EventType flags: ! 102: // ! 103: ! 104: #define KEY_EVENT 0x0001 // Event contains key event record ! 105: #define MOUSE_EVENT 0x0002 // Event contains mouse event record ! 106: #define WINDOW_BUFFER_SIZE_EVENT 0x0004 // Event contains window change event record ! 107: ! 108: typedef struct _CHAR_INFO { ! 109: union { ! 110: WCHAR UnicodeChar; ! 111: CHAR AsciiChar; ! 112: } Char; ! 113: WORD Attributes; ! 114: } CHAR_INFO, *PCHAR_INFO; ! 115: ! 116: // ! 117: // Attributes flags: ! 118: // ! 119: ! 120: #define FOREGROUND_BLUE 0x0001 // text color contains blue. ! 121: #define FOREGROUND_GREEN 0x0002 // text color contains green. ! 122: #define FOREGROUND_RED 0x0004 // text color contains red. ! 123: #define FOREGROUND_INTENSITY 0x0008 // text color is intensified. ! 124: #define BACKGROUND_BLUE 0x0010 // background color contains blue. ! 125: #define BACKGROUND_GREEN 0x0020 // background color contains green. ! 126: #define BACKGROUND_RED 0x0040 // background color contains red. ! 127: #define BACKGROUND_INTENSITY 0x0080 // background color is intensified. ! 128: ! 129: ! 130: typedef struct _CONSOLE_SCREEN_BUFFER_INFO { ! 131: COORD dwSize; ! 132: COORD dwCursorPosition; ! 133: WORD wAttributes; ! 134: SMALL_RECT srWindow; ! 135: COORD dwMaximumWindowSize; ! 136: } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO; ! 137: ! 138: typedef struct _CONSOLE_CURSOR_INFO { ! 139: DWORD dwSize; ! 140: BOOL bVisible; ! 141: } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO; ! 142: ! 143: // ! 144: // typedef for ctrl-c handler routines ! 145: // ! 146: ! 147: typedef ! 148: BOOL ! 149: (*PHANDLER_ROUTINE)( ! 150: IN ULONG CtrlType ! 151: ); ! 152: ! 153: #define CTRL_C_EVENT 0 ! 154: #define CTRL_BREAK_EVENT 1 ! 155: ! 156: // ! 157: // Input Mode flags: ! 158: // ! 159: ! 160: #define ENABLE_PROCESSED_INPUT 0x0001 ! 161: #define ENABLE_LINE_INPUT 0x0002 ! 162: #define ENABLE_ECHO_INPUT 0x0004 ! 163: #define ENABLE_WINDOW_INPUT 0x0008 ! 164: #define ENABLE_MOUSE_INPUT 0x0010 ! 165: ! 166: // ! 167: // Output Mode flags: ! 168: // ! 169: ! 170: #define ENABLE_PROCESSED_OUTPUT 0x0001 ! 171: #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002 ! 172: ! 173: // ! 174: // direct API definitions. ! 175: // ! 176: ! 177: BOOL ! 178: APIENTRY ! 179: PeekConsoleInput( ! 180: HANDLE hConsoleInput, ! 181: PINPUT_RECORD lpBuffer, ! 182: DWORD nLength, ! 183: LPDWORD lpNumberOfEventsRead ! 184: ); ! 185: ! 186: BOOL ! 187: APIENTRY ! 188: ReadConsoleInput( ! 189: HANDLE hConsoleInput, ! 190: PINPUT_RECORD lpBuffer, ! 191: DWORD nLength, ! 192: LPDWORD lpNumberOfEventsRead ! 193: ); ! 194: ! 195: BOOL ! 196: APIENTRY ! 197: WriteConsoleInput( ! 198: HANDLE hConsoleInput, ! 199: PINPUT_RECORD lpBuffer, ! 200: DWORD nLength, ! 201: LPDWORD lpNumberOfEventsWritten ! 202: ); ! 203: ! 204: BOOL ! 205: APIENTRY ! 206: ReadConsoleOutput( ! 207: HANDLE hConsoleOutput, ! 208: PCHAR_INFO lpBuffer, ! 209: COORD dwBufferSize, ! 210: COORD dwBufferCoord, ! 211: PSMALL_RECT lpReadRegion ! 212: ); ! 213: ! 214: BOOL ! 215: APIENTRY ! 216: WriteConsoleOutput( ! 217: HANDLE hConsoleOutput, ! 218: PCHAR_INFO lpBuffer, ! 219: COORD dwBufferSize, ! 220: COORD dwBufferCoord, ! 221: PSMALL_RECT lpWriteRegion ! 222: ); ! 223: ! 224: BOOL ! 225: APIENTRY ! 226: ReadConsoleOutputCharacter( ! 227: HANDLE hConsoleOutput, ! 228: LPSTR lpCharacter, ! 229: DWORD nLength, ! 230: COORD dwReadCoord, ! 231: LPDWORD lpNumberOfCharsRead ! 232: ); ! 233: ! 234: BOOL ! 235: APIENTRY ! 236: ReadConsoleOutputAttribute( ! 237: HANDLE hConsoleOutput, ! 238: LPWORD lpAttribute, ! 239: DWORD nLength, ! 240: COORD dwReadCoord, ! 241: LPDWORD lpNumberOfAttrsRead ! 242: ); ! 243: ! 244: BOOL ! 245: APIENTRY ! 246: WriteConsoleOutputCharacter( ! 247: HANDLE hConsoleOutput, ! 248: LPSTR lpCharacter, ! 249: DWORD nLength, ! 250: COORD dwWriteCoord, ! 251: LPDWORD lpNumberOfCharsWritten ! 252: ); ! 253: ! 254: BOOL ! 255: APIENTRY ! 256: WriteConsoleOutputAttribute( ! 257: HANDLE hConsoleOutput, ! 258: LPWORD lpAttribute, ! 259: DWORD nLength, ! 260: COORD dwWriteCoord, ! 261: LPDWORD lpNumberOfAttrsWritten ! 262: ); ! 263: ! 264: BOOL ! 265: APIENTRY ! 266: FillConsoleOutputCharacter( ! 267: HANDLE hConsoleOutput, ! 268: CHAR cCharacter, ! 269: DWORD nLength, ! 270: COORD dwWriteCoord, ! 271: LPDWORD lpNumberOfCharsWritten ! 272: ); ! 273: ! 274: BOOL ! 275: APIENTRY ! 276: FillConsoleOutputAttribute( ! 277: HANDLE hConsoleOutput, ! 278: WORD wAttribute, ! 279: DWORD nLength, ! 280: COORD dwWriteCoord, ! 281: LPDWORD lpNumberOfAttrsWritten ! 282: ); ! 283: ! 284: BOOL ! 285: APIENTRY ! 286: GetConsoleMode( ! 287: HANDLE hConsoleHandle, ! 288: LPDWORD lpMode ! 289: ); ! 290: ! 291: BOOL ! 292: APIENTRY ! 293: GetNumberOfConsoleInputEvents( ! 294: HANDLE hConsoleInput, ! 295: LPDWORD lpNumberOfEvents ! 296: ); ! 297: ! 298: BOOL ! 299: APIENTRY ! 300: GetConsoleScreenBufferInfo( ! 301: HANDLE hConsoleOutput, ! 302: PCONSOLE_SCREEN_BUFFER_INFO lpConsoleScreenBufferInfo ! 303: ); ! 304: ! 305: COORD ! 306: APIENTRY ! 307: GetLargestConsoleWindowSize( ! 308: HANDLE hConsoleOutput ! 309: ); ! 310: ! 311: BOOL ! 312: APIENTRY ! 313: GetConsoleCursorInfo( ! 314: HANDLE hConsoleOutput, ! 315: PCONSOLE_CURSOR_INFO lpConsoleCursorInfo ! 316: ); ! 317: ! 318: BOOL ! 319: APIENTRY ! 320: GetNumberOfConsoleMouseButtons( ! 321: LPDWORD lpNumberOfMouseButtons ! 322: ); ! 323: ! 324: BOOL ! 325: APIENTRY ! 326: SetConsoleMode( ! 327: HANDLE hConsoleHandle, ! 328: DWORD dwMode ! 329: ); ! 330: ! 331: BOOL ! 332: APIENTRY ! 333: SetConsoleActiveScreenBuffer( ! 334: HANDLE hConsoleOutput ! 335: ); ! 336: ! 337: BOOL ! 338: APIENTRY ! 339: FlushConsoleInputBuffer( ! 340: HANDLE hConsoleInput ! 341: ); ! 342: ! 343: BOOL ! 344: APIENTRY ! 345: SetConsoleScreenBufferSize( ! 346: HANDLE hConsoleOutput, ! 347: COORD dwSize ! 348: ); ! 349: ! 350: BOOL ! 351: APIENTRY ! 352: SetConsoleCursorPosition( ! 353: HANDLE hConsoleOutput, ! 354: COORD dwCursorPosition ! 355: ); ! 356: ! 357: BOOL ! 358: APIENTRY ! 359: SetConsoleCursorInfo( ! 360: HANDLE hConsoleOutput, ! 361: PCONSOLE_CURSOR_INFO lpConsoleCursorInfo ! 362: ); ! 363: ! 364: BOOL ! 365: APIENTRY ! 366: ScrollConsoleScreenBuffer( ! 367: HANDLE hConsoleOutput, ! 368: PSMALL_RECT lpScrollRectangle, ! 369: PSMALL_RECT lpClipRectangle, ! 370: COORD dwDestinationOrigin, ! 371: PCHAR_INFO lpFill ! 372: ); ! 373: ! 374: BOOL ! 375: APIENTRY ! 376: SetConsoleWindowInfo( ! 377: HANDLE hConsoleOutput, ! 378: BOOL bAbsolute, ! 379: PSMALL_RECT lpConsoleWindow ! 380: ); ! 381: ! 382: BOOL ! 383: APIENTRY ! 384: SetConsoleTextAttribute( ! 385: HANDLE hConsoleOutput, ! 386: WORD wAttributes ! 387: ); ! 388: ! 389: BOOL ! 390: APIENTRY ! 391: SetConsoleCtrlHandler( ! 392: IN PHANDLER_ROUTINE HandlerRoutine, ! 393: IN BOOL Add ! 394: ); ! 395: ! 396: BOOL ! 397: APIENTRY ! 398: AllocConsole( VOID ); ! 399: ! 400: BOOL ! 401: APIENTRY ! 402: FreeConsole( VOID ); ! 403: ! 404: ! 405: DWORD ! 406: APIENTRY ! 407: GetConsoleTitle( ! 408: LPSTR lpConsoleTitle, ! 409: DWORD nSize ! 410: ); ! 411: ! 412: BOOL ! 413: APIENTRY ! 414: SetConsoleTitle( ! 415: LPSTR lpConsoleTitle ! 416: ); ! 417: ! 418: #define CONSOLE_TEXTMODE_BUFFER 1 ! 419: ! 420: HANDLE ! 421: APIENTRY ! 422: CreateConsoleScreenBuffer( ! 423: DWORD dwDesiredAccess, ! 424: DWORD dwShareMode, ! 425: LPSECURITY_ATTRIBUTES lpSecurityAttributes, ! 426: IN DWORD dwFlags, ! 427: IN PVOID lpScreenBufferData OPTIONAL ! 428: ); ! 429: ! 430: #endif // _WINCON_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.