1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 //! This module contains the public data structures, data types, and procedures exported by the NT 7 //! console subsystem. 8 use ctypes::c_void; 9 use shared::minwindef::{BOOL, DWORD, LPDWORD, LPVOID, LPWORD, UINT, ULONG, WORD}; 10 use shared::windef::{COLORREF, HWND}; 11 use um::minwinbase::SECURITY_ATTRIBUTES; 12 use um::wingdi::LF_FACESIZE; 13 use um::winnt::{CHAR, HANDLE, LPCSTR, LPCWSTR, LPSTR, LPWSTR, WCHAR}; 14 // Many definitions in wincontypes used to be defined in this file, so reexport them to avoid 15 // breakage. For clarity they are imported in the order they are defined in that file rather 16 // than winapi's usual alphabetical ordering, with some newlines and indentation to match their 17 // grouping in the file. 18 pub use um::wincontypes::{ 19 COORD, PCOORD, 20 SMALL_RECT, PSMALL_RECT, 21 KEY_EVENT_RECORD_uChar, KEY_EVENT_RECORD, PKEY_EVENT_RECORD, 22 RIGHT_ALT_PRESSED, LEFT_ALT_PRESSED, RIGHT_CTRL_PRESSED, LEFT_CTRL_PRESSED, SHIFT_PRESSED, 23 NUMLOCK_ON, SCROLLLOCK_ON, CAPSLOCK_ON, ENHANCED_KEY, NLS_DBCSCHAR, NLS_ALPHANUMERIC, 24 NLS_KATAKANA, NLS_HIRAGANA, NLS_ROMAN, NLS_IME_CONVERSION, NLS_IME_DISABLE, 25 MOUSE_EVENT_RECORD, PMOUSE_EVENT_RECORD, 26 FROM_LEFT_1ST_BUTTON_PRESSED, RIGHTMOST_BUTTON_PRESSED, FROM_LEFT_2ND_BUTTON_PRESSED, 27 FROM_LEFT_3RD_BUTTON_PRESSED, FROM_LEFT_4TH_BUTTON_PRESSED, MOUSE_MOVED, DOUBLE_CLICK, 28 MOUSE_WHEELED, MOUSE_HWHEELED, 29 WINDOW_BUFFER_SIZE_RECORD, PWINDOW_BUFFER_SIZE_RECORD, 30 MENU_EVENT_RECORD, PMENU_EVENT_RECORD, 31 FOCUS_EVENT_RECORD, PFOCUS_EVENT_RECORD, 32 INPUT_RECORD_Event, INPUT_RECORD, PINPUT_RECORD, 33 KEY_EVENT, MOUSE_EVENT, WINDOW_BUFFER_SIZE_EVENT, MENU_EVENT, FOCUS_EVENT, 34 CHAR_INFO_Char, CHAR_INFO, PCHAR_INFO, 35 CONSOLE_FONT_INFO, PCONSOLE_FONT_INFO 36 }; 37 pub const FOREGROUND_BLUE: WORD = 0x0001; 38 pub const FOREGROUND_GREEN: WORD = 0x0002; 39 pub const FOREGROUND_RED: WORD = 0x0004; 40 pub const FOREGROUND_INTENSITY: WORD = 0x0008; 41 pub const BACKGROUND_BLUE: WORD = 0x0010; 42 pub const BACKGROUND_GREEN: WORD = 0x0020; 43 pub const BACKGROUND_RED: WORD = 0x0040; 44 pub const BACKGROUND_INTENSITY: WORD = 0x0080; 45 pub const COMMON_LVB_LEADING_BYTE: WORD = 0x0100; 46 pub const COMMON_LVB_TRAILING_BYTE: WORD = 0x0200; 47 pub const COMMON_LVB_GRID_HORIZONTAL: WORD = 0x0400; 48 pub const COMMON_LVB_GRID_LVERTICAL: WORD = 0x0800; 49 pub const COMMON_LVB_GRID_RVERTICAL: WORD = 0x1000; 50 pub const COMMON_LVB_REVERSE_VIDEO: WORD = 0x4000; 51 pub const COMMON_LVB_UNDERSCORE: WORD = 0x8000; 52 pub const COMMON_LVB_SBCSDBCS: WORD = 0x0300; 53 STRUCT!{struct CONSOLE_SCREEN_BUFFER_INFO { 54 dwSize: COORD, 55 dwCursorPosition: COORD, 56 wAttributes: WORD, 57 srWindow: SMALL_RECT, 58 dwMaximumWindowSize: COORD, 59 }} 60 pub type PCONSOLE_SCREEN_BUFFER_INFO = *mut CONSOLE_SCREEN_BUFFER_INFO; 61 STRUCT!{struct CONSOLE_SCREEN_BUFFER_INFOEX { 62 cbSize: ULONG, 63 dwSize: COORD, 64 dwCursorPosition: COORD, 65 wAttributes: WORD, 66 srWindow: SMALL_RECT, 67 dwMaximumWindowSize: COORD, 68 wPopupAttributes: WORD, 69 bFullscreenSupported: BOOL, 70 ColorTable: [COLORREF; 16], 71 }} 72 pub type PCONSOLE_SCREEN_BUFFER_INFOEX = *mut CONSOLE_SCREEN_BUFFER_INFOEX; 73 STRUCT!{struct CONSOLE_CURSOR_INFO { 74 dwSize: DWORD, 75 bVisible: BOOL, 76 }} 77 pub type PCONSOLE_CURSOR_INFO = *mut CONSOLE_CURSOR_INFO; 78 STRUCT!{struct CONSOLE_FONT_INFOEX { 79 cbSize: ULONG, 80 nFont: DWORD, 81 dwFontSize: COORD, 82 FontFamily: UINT, 83 FontWeight: UINT, 84 FaceName: [WCHAR; LF_FACESIZE], 85 }} 86 pub type PCONSOLE_FONT_INFOEX = *mut CONSOLE_FONT_INFOEX; 87 pub const HISTORY_NO_DUP_FLAG: DWORD = 0x1; 88 STRUCT!{struct CONSOLE_HISTORY_INFO { 89 cbSize: UINT, 90 HistoryBufferSize: UINT, 91 NumberOfHistoryBuffers: UINT, 92 dwFlags: DWORD, 93 }} 94 pub type PCONSOLE_HISTORY_INFO = *mut CONSOLE_HISTORY_INFO; 95 STRUCT!{struct CONSOLE_SELECTION_INFO { 96 dwFlags: DWORD, 97 dwSelectionAnchor: COORD, 98 srSelection: SMALL_RECT, 99 }} 100 pub type PCONSOLE_SELECTION_INFO = *mut CONSOLE_SELECTION_INFO; 101 pub const CONSOLE_NO_SELECTION: DWORD = 0x0000; 102 pub const CONSOLE_SELECTION_IN_PROGRESS: DWORD = 0x0001; 103 pub const CONSOLE_SELECTION_NOT_EMPTY: DWORD = 0x0002; 104 pub const CONSOLE_MOUSE_SELECTION: DWORD = 0x0004; 105 pub const CONSOLE_MOUSE_DOWN: DWORD = 0x0008; 106 FN!{stdcall PHANDLER_ROUTINE( 107 CtrlType: DWORD, 108 ) -> BOOL} 109 pub const CTRL_C_EVENT: DWORD = 0; 110 pub const CTRL_BREAK_EVENT: DWORD = 1; 111 pub const CTRL_CLOSE_EVENT: DWORD = 2; 112 pub const CTRL_LOGOFF_EVENT: DWORD = 5; 113 pub const CTRL_SHUTDOWN_EVENT: DWORD = 6; 114 pub const ENABLE_PROCESSED_INPUT: DWORD = 0x0001; 115 pub const ENABLE_LINE_INPUT: DWORD = 0x0002; 116 pub const ENABLE_ECHO_INPUT: DWORD = 0x0004; 117 pub const ENABLE_WINDOW_INPUT: DWORD = 0x0008; 118 pub const ENABLE_MOUSE_INPUT: DWORD = 0x0010; 119 pub const ENABLE_INSERT_MODE: DWORD = 0x0020; 120 pub const ENABLE_QUICK_EDIT_MODE: DWORD = 0x0040; 121 pub const ENABLE_EXTENDED_FLAGS: DWORD = 0x0080; 122 pub const ENABLE_AUTO_POSITION: DWORD = 0x0100; 123 pub const ENABLE_VIRTUAL_TERMINAL_INPUT: DWORD = 0x0200; 124 pub const ENABLE_PROCESSED_OUTPUT: DWORD = 0x0001; 125 pub const ENABLE_WRAP_AT_EOL_OUTPUT: DWORD = 0x0002; 126 pub const ENABLE_VIRTUAL_TERMINAL_PROCESSING: DWORD = 0x0004; 127 pub const DISABLE_NEWLINE_AUTO_RETURN: DWORD = 0x0008; 128 pub const ENABLE_LVB_GRID_WORLDWIDE: DWORD = 0x0010; 129 extern "system" { PeekConsoleInputW( hConsoleInput: HANDLE, lpBuffer: PINPUT_RECORD, nLength: DWORD, lpNumberOfEventsRead: LPDWORD, ) -> BOOL130 pub fn PeekConsoleInputW( 131 hConsoleInput: HANDLE, 132 lpBuffer: PINPUT_RECORD, 133 nLength: DWORD, 134 lpNumberOfEventsRead: LPDWORD, 135 ) -> BOOL; WriteConsoleInputA( hConsoleInput: HANDLE, lpBuffer: *const INPUT_RECORD, nLength: DWORD, lpNumberOfEventsWritten: LPDWORD, ) -> BOOL136 pub fn WriteConsoleInputA( 137 hConsoleInput: HANDLE, 138 lpBuffer: *const INPUT_RECORD, 139 nLength: DWORD, 140 lpNumberOfEventsWritten: LPDWORD, 141 ) -> BOOL; WriteConsoleInputW( hConsoleInput: HANDLE, lpBuffer: *const INPUT_RECORD, nLength: DWORD, lpNumberOfEventsWritten: LPDWORD, ) -> BOOL142 pub fn WriteConsoleInputW( 143 hConsoleInput: HANDLE, 144 lpBuffer: *const INPUT_RECORD, 145 nLength: DWORD, 146 lpNumberOfEventsWritten: LPDWORD, 147 ) -> BOOL; ReadConsoleOutputA( hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpReadRegion: PSMALL_RECT, ) -> BOOL148 pub fn ReadConsoleOutputA( 149 hConsoleOutput: HANDLE, 150 lpBuffer: PCHAR_INFO, 151 dwBufferSize: COORD, 152 dwBufferCoord: COORD, 153 lpReadRegion: PSMALL_RECT, 154 ) -> BOOL; ReadConsoleOutputW( hConsoleOutput: HANDLE, lpBuffer: PCHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpReadRegion: PSMALL_RECT, ) -> BOOL155 pub fn ReadConsoleOutputW( 156 hConsoleOutput: HANDLE, 157 lpBuffer: PCHAR_INFO, 158 dwBufferSize: COORD, 159 dwBufferCoord: COORD, 160 lpReadRegion: PSMALL_RECT, 161 ) -> BOOL; WriteConsoleOutputA( hConsoleOutput: HANDLE, lpBuffer: *const CHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpWriteRegion: PSMALL_RECT, ) -> BOOL162 pub fn WriteConsoleOutputA( 163 hConsoleOutput: HANDLE, 164 lpBuffer: *const CHAR_INFO, 165 dwBufferSize: COORD, 166 dwBufferCoord: COORD, 167 lpWriteRegion: PSMALL_RECT, 168 ) -> BOOL; WriteConsoleOutputW( hConsoleOutput: HANDLE, lpBuffer: *const CHAR_INFO, dwBufferSize: COORD, dwBufferCoord: COORD, lpWriteRegion: PSMALL_RECT, ) -> BOOL169 pub fn WriteConsoleOutputW( 170 hConsoleOutput: HANDLE, 171 lpBuffer: *const CHAR_INFO, 172 dwBufferSize: COORD, 173 dwBufferCoord: COORD, 174 lpWriteRegion: PSMALL_RECT, 175 ) -> BOOL; ReadConsoleOutputCharacterA( hConsoleOutput: HANDLE, lpCharacter: LPSTR, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: LPDWORD, ) -> BOOL176 pub fn ReadConsoleOutputCharacterA( 177 hConsoleOutput: HANDLE, 178 lpCharacter: LPSTR, 179 nLength: DWORD, 180 dwReadCoord: COORD, 181 lpNumberOfCharsRead: LPDWORD, 182 ) -> BOOL; ReadConsoleOutputCharacterW( hConsoleOutput: HANDLE, lpCharacter: LPWSTR, nLength: DWORD, dwReadCoord: COORD, lpNumberOfCharsRead: LPDWORD, ) -> BOOL183 pub fn ReadConsoleOutputCharacterW( 184 hConsoleOutput: HANDLE, 185 lpCharacter: LPWSTR, 186 nLength: DWORD, 187 dwReadCoord: COORD, 188 lpNumberOfCharsRead: LPDWORD, 189 ) -> BOOL; ReadConsoleOutputAttribute( hConsoleOutput: HANDLE, lpAttribute: LPWORD, nLength: DWORD, dwReadCoord: COORD, lpNumberOfAttrsRead: LPDWORD, ) -> BOOL190 pub fn ReadConsoleOutputAttribute( 191 hConsoleOutput: HANDLE, 192 lpAttribute: LPWORD, 193 nLength: DWORD, 194 dwReadCoord: COORD, 195 lpNumberOfAttrsRead: LPDWORD, 196 ) -> BOOL; WriteConsoleOutputCharacterA( hConsoleOutput: HANDLE, lpCharacter: LPCSTR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD, ) -> BOOL197 pub fn WriteConsoleOutputCharacterA( 198 hConsoleOutput: HANDLE, 199 lpCharacter: LPCSTR, 200 nLength: DWORD, 201 dwWriteCoord: COORD, 202 lpNumberOfCharsWritten: LPDWORD, 203 ) -> BOOL; WriteConsoleOutputCharacterW( hConsoleOutput: HANDLE, lpCharacter: LPCWSTR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD, ) -> BOOL204 pub fn WriteConsoleOutputCharacterW( 205 hConsoleOutput: HANDLE, 206 lpCharacter: LPCWSTR, 207 nLength: DWORD, 208 dwWriteCoord: COORD, 209 lpNumberOfCharsWritten: LPDWORD, 210 ) -> BOOL; WriteConsoleOutputAttribute( hConsoleOutput: HANDLE, lpAttribute: *const WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: LPDWORD, ) -> BOOL211 pub fn WriteConsoleOutputAttribute( 212 hConsoleOutput: HANDLE, 213 lpAttribute: *const WORD, 214 nLength: DWORD, 215 dwWriteCoord: COORD, 216 lpNumberOfAttrsWritten: LPDWORD, 217 ) -> BOOL; FillConsoleOutputCharacterA( hConsoleOutput: HANDLE, cCharacter: CHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD, ) -> BOOL218 pub fn FillConsoleOutputCharacterA( 219 hConsoleOutput: HANDLE, 220 cCharacter: CHAR, 221 nLength: DWORD, 222 dwWriteCoord: COORD, 223 lpNumberOfCharsWritten: LPDWORD, 224 ) -> BOOL; FillConsoleOutputCharacterW( hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfCharsWritten: LPDWORD, ) -> BOOL225 pub fn FillConsoleOutputCharacterW( 226 hConsoleOutput: HANDLE, 227 cCharacter: WCHAR, 228 nLength: DWORD, 229 dwWriteCoord: COORD, 230 lpNumberOfCharsWritten: LPDWORD, 231 ) -> BOOL; FillConsoleOutputAttribute( hConsoleOutput: HANDLE, wAttribute: WORD, nLength: DWORD, dwWriteCoord: COORD, lpNumberOfAttrsWritten: LPDWORD, ) -> BOOL232 pub fn FillConsoleOutputAttribute( 233 hConsoleOutput: HANDLE, 234 wAttribute: WORD, 235 nLength: DWORD, 236 dwWriteCoord: COORD, 237 lpNumberOfAttrsWritten: LPDWORD, 238 ) -> BOOL; 239 } 240 pub const CONSOLE_REAL_OUTPUT_HANDLE: *mut c_void = -2isize as *mut c_void; 241 pub const CONSOLE_REAL_INPUT_HANDLE: *mut c_void = -3isize as *mut c_void; 242 extern "system" { GetConsoleScreenBufferInfo( hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO, ) -> BOOL243 pub fn GetConsoleScreenBufferInfo( 244 hConsoleOutput: HANDLE, 245 lpConsoleScreenBufferInfo: PCONSOLE_SCREEN_BUFFER_INFO, 246 ) -> BOOL; GetConsoleScreenBufferInfoEx( hConsoleOutput: HANDLE, lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX, ) -> BOOL247 pub fn GetConsoleScreenBufferInfoEx( 248 hConsoleOutput: HANDLE, 249 lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX, 250 ) -> BOOL; SetConsoleScreenBufferInfoEx( hConsoleOutput: HANDLE, lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX, ) -> BOOL251 pub fn SetConsoleScreenBufferInfoEx( 252 hConsoleOutput: HANDLE, 253 lpConsoleScreenBufferInfoEx: PCONSOLE_SCREEN_BUFFER_INFOEX, 254 ) -> BOOL; GetLargestConsoleWindowSize( hConsoleOutput: HANDLE, ) -> COORD255 pub fn GetLargestConsoleWindowSize( 256 hConsoleOutput: HANDLE, 257 ) -> COORD; GetConsoleCursorInfo( hConsoleOutput: HANDLE, lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO, ) -> BOOL258 pub fn GetConsoleCursorInfo( 259 hConsoleOutput: HANDLE, 260 lpConsoleCursorInfo: PCONSOLE_CURSOR_INFO, 261 ) -> BOOL; GetCurrentConsoleFont( hConsoleOutput: HANDLE, bMaximumWindow: BOOL, lpConsoleCurrentFont: PCONSOLE_FONT_INFO, ) -> BOOL262 pub fn GetCurrentConsoleFont( 263 hConsoleOutput: HANDLE, 264 bMaximumWindow: BOOL, 265 lpConsoleCurrentFont: PCONSOLE_FONT_INFO, 266 ) -> BOOL; GetCurrentConsoleFontEx( hConsoleOutput: HANDLE, bMaximumWindow: BOOL, lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX, ) -> BOOL267 pub fn GetCurrentConsoleFontEx( 268 hConsoleOutput: HANDLE, 269 bMaximumWindow: BOOL, 270 lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX, 271 ) -> BOOL; SetCurrentConsoleFontEx( hConsoleOutput: HANDLE, bMaximumWindow: BOOL, lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX, ) -> BOOL272 pub fn SetCurrentConsoleFontEx( 273 hConsoleOutput: HANDLE, 274 bMaximumWindow: BOOL, 275 lpConsoleCurrentFontEx: PCONSOLE_FONT_INFOEX, 276 ) -> BOOL; GetConsoleHistoryInfo( lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO, ) -> BOOL277 pub fn GetConsoleHistoryInfo( 278 lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO, 279 ) -> BOOL; SetConsoleHistoryInfo( lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO, ) -> BOOL280 pub fn SetConsoleHistoryInfo( 281 lpConsoleHistoryInfo: PCONSOLE_HISTORY_INFO, 282 ) -> BOOL; GetConsoleFontSize( hConsoleOutput: HANDLE, nFont: DWORD, ) -> COORD283 pub fn GetConsoleFontSize( 284 hConsoleOutput: HANDLE, 285 nFont: DWORD, 286 ) -> COORD; GetConsoleSelectionInfo( lpConsoleSelectionInfo: PCONSOLE_SELECTION_INFO, ) -> BOOL287 pub fn GetConsoleSelectionInfo( 288 lpConsoleSelectionInfo: PCONSOLE_SELECTION_INFO, 289 ) -> BOOL; GetNumberOfConsoleMouseButtons( lpNumberOfMouseButtons: LPDWORD, ) -> BOOL290 pub fn GetNumberOfConsoleMouseButtons( 291 lpNumberOfMouseButtons: LPDWORD, 292 ) -> BOOL; SetConsoleActiveScreenBuffer( hConsoleOutput: HANDLE, ) -> BOOL293 pub fn SetConsoleActiveScreenBuffer( 294 hConsoleOutput: HANDLE, 295 ) -> BOOL; FlushConsoleInputBuffer( hConsoleInput: HANDLE, ) -> BOOL296 pub fn FlushConsoleInputBuffer( 297 hConsoleInput: HANDLE, 298 ) -> BOOL; SetConsoleScreenBufferSize( hConsoleOutput: HANDLE, dwSize: COORD, ) -> BOOL299 pub fn SetConsoleScreenBufferSize( 300 hConsoleOutput: HANDLE, 301 dwSize: COORD, 302 ) -> BOOL; SetConsoleCursorPosition( hConsoleOutput: HANDLE, dwCursorPosition: COORD, ) -> BOOL303 pub fn SetConsoleCursorPosition( 304 hConsoleOutput: HANDLE, 305 dwCursorPosition: COORD, 306 ) -> BOOL; SetConsoleCursorInfo( hConsoleOutput: HANDLE, lpConsoleCursorInfo: *const CONSOLE_CURSOR_INFO, ) -> BOOL307 pub fn SetConsoleCursorInfo( 308 hConsoleOutput: HANDLE, 309 lpConsoleCursorInfo: *const CONSOLE_CURSOR_INFO, 310 ) -> BOOL; ScrollConsoleScreenBufferA( hConsoleOutput: HANDLE, lpScrollRectangle: *const SMALL_RECT, lpClipRectangle: *const SMALL_RECT, dwDestinationOrigin: COORD, lpFill: *const CHAR_INFO, ) -> BOOL311 pub fn ScrollConsoleScreenBufferA( 312 hConsoleOutput: HANDLE, 313 lpScrollRectangle: *const SMALL_RECT, 314 lpClipRectangle: *const SMALL_RECT, 315 dwDestinationOrigin: COORD, 316 lpFill: *const CHAR_INFO, 317 ) -> BOOL; ScrollConsoleScreenBufferW( hConsoleOutput: HANDLE, lpScrollRectangle: *const SMALL_RECT, lpClipRectangle: *const SMALL_RECT, dwDestinationOrigin: COORD, lpFill: *const CHAR_INFO, ) -> BOOL318 pub fn ScrollConsoleScreenBufferW( 319 hConsoleOutput: HANDLE, 320 lpScrollRectangle: *const SMALL_RECT, 321 lpClipRectangle: *const SMALL_RECT, 322 dwDestinationOrigin: COORD, 323 lpFill: *const CHAR_INFO, 324 ) -> BOOL; SetConsoleWindowInfo( hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: *const SMALL_RECT, ) -> BOOL325 pub fn SetConsoleWindowInfo( 326 hConsoleOutput: HANDLE, 327 bAbsolute: BOOL, 328 lpConsoleWindow: *const SMALL_RECT, 329 ) -> BOOL; SetConsoleTextAttribute( hConsoleOutput: HANDLE, wAttributes: WORD, ) -> BOOL330 pub fn SetConsoleTextAttribute( 331 hConsoleOutput: HANDLE, 332 wAttributes: WORD, 333 ) -> BOOL; GenerateConsoleCtrlEvent( dwCtrlEvent: DWORD, dwProcessGroupId: DWORD, ) -> BOOL334 pub fn GenerateConsoleCtrlEvent( 335 dwCtrlEvent: DWORD, 336 dwProcessGroupId: DWORD, 337 ) -> BOOL; FreeConsole() -> BOOL338 pub fn FreeConsole() -> BOOL; AttachConsole( dwProcessId: DWORD, ) -> BOOL339 pub fn AttachConsole( 340 dwProcessId: DWORD, 341 ) -> BOOL; 342 } 343 pub const ATTACH_PARENT_PROCESS: DWORD = 0xFFFFFFFF; 344 extern "system" { GetConsoleTitleA( lpConsoleTitle: LPSTR, nSize: DWORD, ) -> DWORD345 pub fn GetConsoleTitleA( 346 lpConsoleTitle: LPSTR, 347 nSize: DWORD, 348 ) -> DWORD; GetConsoleTitleW( lpConsoleTitle: LPWSTR, nSize: DWORD, ) -> DWORD349 pub fn GetConsoleTitleW( 350 lpConsoleTitle: LPWSTR, 351 nSize: DWORD, 352 ) -> DWORD; GetConsoleOriginalTitleA( lpConsoleTitle: LPSTR, nSize: DWORD, ) -> DWORD353 pub fn GetConsoleOriginalTitleA( 354 lpConsoleTitle: LPSTR, 355 nSize: DWORD, 356 ) -> DWORD; GetConsoleOriginalTitleW( lpConsoleTitle: LPWSTR, nSize: DWORD, ) -> DWORD357 pub fn GetConsoleOriginalTitleW( 358 lpConsoleTitle: LPWSTR, 359 nSize: DWORD, 360 ) -> DWORD; SetConsoleTitleA( lpConsoleTitle: LPCSTR, ) -> BOOL361 pub fn SetConsoleTitleA( 362 lpConsoleTitle: LPCSTR, 363 ) -> BOOL; SetConsoleTitleW( lpConsoleTitle: LPCWSTR, ) -> BOOL364 pub fn SetConsoleTitleW( 365 lpConsoleTitle: LPCWSTR, 366 ) -> BOOL; 367 } 368 STRUCT!{struct CONSOLE_READCONSOLE_CONTROL { 369 nLength: ULONG, 370 nInitialChars: ULONG, 371 dwCtrlWakeupMask: ULONG, 372 dwControlKeyState: ULONG, 373 }} 374 pub type PCONSOLE_READCONSOLE_CONTROL = *mut CONSOLE_READCONSOLE_CONTROL; 375 pub const CONSOLE_TEXTMODE_BUFFER: DWORD = 1; 376 extern "system" { CreateConsoleScreenBuffer( dwDesiredAccess: DWORD, dwShareMode: DWORD, lpSecurityAttributes: *const SECURITY_ATTRIBUTES, dwFlags: DWORD, lpScreenBufferData: LPVOID, ) -> HANDLE377 pub fn CreateConsoleScreenBuffer( 378 dwDesiredAccess: DWORD, 379 dwShareMode: DWORD, 380 lpSecurityAttributes: *const SECURITY_ATTRIBUTES, 381 dwFlags: DWORD, 382 lpScreenBufferData: LPVOID, 383 ) -> HANDLE; SetConsoleCP( wCodePageID: UINT, ) -> BOOL384 pub fn SetConsoleCP( 385 wCodePageID: UINT, 386 ) -> BOOL; SetConsoleOutputCP( wCodePageID: UINT, ) -> BOOL387 pub fn SetConsoleOutputCP( 388 wCodePageID: UINT, 389 ) -> BOOL; 390 } 391 pub const CONSOLE_FULLSCREEN: DWORD = 1; 392 pub const CONSOLE_FULLSCREEN_HARDWARE: DWORD = 2; 393 extern "system" { GetConsoleDisplayMode( lpModeFlags: LPDWORD, ) -> BOOL394 pub fn GetConsoleDisplayMode( 395 lpModeFlags: LPDWORD, 396 ) -> BOOL; 397 } 398 pub const CONSOLE_FULLSCREEN_MODE: DWORD = 1; 399 pub const CONSOLE_WINDOWED_MODE: DWORD = 2; 400 extern "system" { SetConsoleDisplayMode( hConsoleOutput: HANDLE, dwFlags: DWORD, lpNewScreenBufferDimensions: PCOORD, ) -> BOOL401 pub fn SetConsoleDisplayMode( 402 hConsoleOutput: HANDLE, 403 dwFlags: DWORD, 404 lpNewScreenBufferDimensions: PCOORD, 405 ) -> BOOL; GetConsoleWindow() -> HWND406 pub fn GetConsoleWindow() -> HWND; GetConsoleProcessList( lpdwProcessList: LPDWORD, dwProcessCount: DWORD, ) -> DWORD407 pub fn GetConsoleProcessList( 408 lpdwProcessList: LPDWORD, 409 dwProcessCount: DWORD, 410 ) -> DWORD; AddConsoleAliasA( Source: LPSTR, Target: LPSTR, ExeName: LPSTR, ) -> BOOL411 pub fn AddConsoleAliasA( 412 Source: LPSTR, 413 Target: LPSTR, 414 ExeName: LPSTR, 415 ) -> BOOL; AddConsoleAliasW( Source: LPWSTR, Target: LPWSTR, ExeName: LPWSTR, ) -> BOOL416 pub fn AddConsoleAliasW( 417 Source: LPWSTR, 418 Target: LPWSTR, 419 ExeName: LPWSTR, 420 ) -> BOOL; GetConsoleAliasA( Source: LPSTR, TargetBuffer: LPSTR, TargetBufferLength: DWORD, ExeName: LPSTR, ) -> DWORD421 pub fn GetConsoleAliasA( 422 Source: LPSTR, 423 TargetBuffer: LPSTR, 424 TargetBufferLength: DWORD, 425 ExeName: LPSTR, 426 ) -> DWORD; GetConsoleAliasW( Source: LPWSTR, TargetBuffer: LPWSTR, TargetBufferLength: DWORD, ExeName: LPWSTR, ) -> DWORD427 pub fn GetConsoleAliasW( 428 Source: LPWSTR, 429 TargetBuffer: LPWSTR, 430 TargetBufferLength: DWORD, 431 ExeName: LPWSTR, 432 ) -> DWORD; GetConsoleAliasesLengthA( ExeName: LPSTR, ) -> DWORD433 pub fn GetConsoleAliasesLengthA( 434 ExeName: LPSTR, 435 ) -> DWORD; GetConsoleAliasesLengthW( ExeName: LPWSTR, ) -> DWORD436 pub fn GetConsoleAliasesLengthW( 437 ExeName: LPWSTR, 438 ) -> DWORD; GetConsoleAliasExesLengthA() -> DWORD439 pub fn GetConsoleAliasExesLengthA() -> DWORD; GetConsoleAliasExesLengthW() -> DWORD440 pub fn GetConsoleAliasExesLengthW() -> DWORD; GetConsoleAliasesA( AliasBuffer: LPSTR, AliasBufferLength: DWORD, ExeName: LPSTR, ) -> DWORD441 pub fn GetConsoleAliasesA( 442 AliasBuffer: LPSTR, 443 AliasBufferLength: DWORD, 444 ExeName: LPSTR, 445 ) -> DWORD; GetConsoleAliasesW( AliasBuffer: LPWSTR, AliasBufferLength: DWORD, ExeName: LPWSTR, ) -> DWORD446 pub fn GetConsoleAliasesW( 447 AliasBuffer: LPWSTR, 448 AliasBufferLength: DWORD, 449 ExeName: LPWSTR, 450 ) -> DWORD; GetConsoleAliasExesA( ExeNameBuffer: LPSTR, ExeNameBufferLength: DWORD, ) -> DWORD451 pub fn GetConsoleAliasExesA( 452 ExeNameBuffer: LPSTR, 453 ExeNameBufferLength: DWORD, 454 ) -> DWORD; GetConsoleAliasExesW( ExeNameBuffer: LPWSTR, ExeNameBufferLength: DWORD, ) -> DWORD455 pub fn GetConsoleAliasExesW( 456 ExeNameBuffer: LPWSTR, 457 ExeNameBufferLength: DWORD, 458 ) -> DWORD; 459 } 460