Artifact 418f11163a21e063776cd4898602b1a2232bc074:
- File
src/win32/wincon.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a /*************** 0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0d 0a 2a 20 20 20 20 ********\..* 0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0060: 20 20 20 20 20 20 20 20 20 20 20 20 77 69 6e 63 winc 0070: 6f 6e 2e 64 20 20 20 20 20 20 20 20 20 20 20 20 on.d 0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0090: 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 20 *..* 00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0d *. 00e0: 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .* 00f0: 20 20 20 20 20 20 20 20 20 57 69 6e 64 6f 77 73 Windows 0100: 20 41 50 49 20 68 65 61 64 65 72 20 6d 6f 64 75 API header modu 0110: 6c 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20 le 0120: 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 20 *..* 0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0170: 20 20 20 20 2a 0d 0a 2a 20 20 20 20 20 20 20 20 *..* 0180: 20 20 20 20 20 20 20 20 20 54 72 61 6e 73 6c 61 Transla 0190: 74 65 64 20 66 72 6f 6d 20 4d 69 6e 47 57 20 57 ted from MinGW W 01a0: 69 6e 64 6f 77 73 20 68 65 61 64 65 72 73 20 20 indows headers 01b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a * 01c0: 0d 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 ..* 01d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 01e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0200: 20 20 20 20 20 20 20 20 20 20 2a 0d 0a 2a 20 20 *..* 0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0220: 20 20 20 20 20 50 6c 61 63 65 64 20 69 6e 74 6f Placed into 0230: 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e 20 20 public domain 0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0250: 20 20 20 20 20 2a 0d 0a 5c 2a 2a 2a 2a 2a 2a 2a *..\******* 0260: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0270: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0280: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 0290: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a **************** 02a0: 2f 0d 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32 2e /..module win32. 02b0: 77 69 6e 63 6f 6e 3b 0d 0a 70 72 61 67 6d 61 28 wincon;..pragma( 02c0: 6c 69 62 2c 20 22 6b 65 72 6e 65 6c 33 32 22 29 lib, "kernel32") 02d0: 3b 0d 0a 0d 0a 70 72 69 76 61 74 65 20 69 6d 70 ;....private imp 02e0: 6f 72 74 20 77 69 6e 33 32 2e 77 33 32 61 70 69 ort win32.w32api 02f0: 2c 20 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0d , win32.windef;. 0300: 0a 0d 0a 2f 2f 20 46 49 58 4d 45 3a 20 63 6c 65 ...// FIXME: cle 0310: 61 6e 20 75 70 20 57 69 6e 64 6f 77 73 20 76 65 an up Windows ve 0320: 72 73 69 6f 6e 20 73 75 70 70 6f 72 74 0d 0a 0d rsion support... 0330: 0a 65 6e 75 6d 20 7b 0d 0a 09 46 4f 52 45 47 52 .enum {...FOREGR 0340: 4f 55 4e 44 5f 42 4c 55 45 20 20 20 20 20 20 3d OUND_BLUE = 0350: 20 31 2c 0d 0a 09 46 4f 52 45 47 52 4f 55 4e 44 1,...FOREGROUND 0360: 5f 47 52 45 45 4e 20 20 20 20 20 3d 20 32 2c 0d _GREEN = 2,. 0370: 0a 09 46 4f 52 45 47 52 4f 55 4e 44 5f 52 45 44 ..FOREGROUND_RED 0380: 20 20 20 20 20 20 20 3d 20 34 2c 0d 0a 09 46 4f = 4,...FO 0390: 52 45 47 52 4f 55 4e 44 5f 49 4e 54 45 4e 53 49 REGROUND_INTENSI 03a0: 54 59 20 3d 20 38 2c 0d 0a 09 42 41 43 4b 47 52 TY = 8,...BACKGR 03b0: 4f 55 4e 44 5f 42 4c 55 45 20 20 20 20 20 20 3d OUND_BLUE = 03c0: 20 31 36 2c 0d 0a 09 42 41 43 4b 47 52 4f 55 4e 16,...BACKGROUN 03d0: 44 5f 47 52 45 45 4e 20 20 20 20 20 3d 20 33 32 D_GREEN = 32 03e0: 2c 0d 0a 09 42 41 43 4b 47 52 4f 55 4e 44 5f 52 ,...BACKGROUND_R 03f0: 45 44 20 20 20 20 20 20 20 3d 20 36 34 2c 0d 0a ED = 64,.. 0400: 09 42 41 43 4b 47 52 4f 55 4e 44 5f 49 4e 54 45 .BACKGROUND_INTE 0410: 4e 53 49 54 59 20 3d 20 31 32 38 0d 0a 7d 0d 0a NSITY = 128..}.. 0420: 0d 0a 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 ..static if (_WI 0430: 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 35 N32_WINNT >= 0x5 0440: 30 31 29 20 7b 0d 0a 09 65 6e 75 6d 20 7b 0d 0a 01) {...enum {.. 0450: 09 09 43 4f 4e 53 4f 4c 45 5f 46 55 4c 4c 53 43 ..CONSOLE_FULLSC 0460: 52 45 45 4e 5f 4d 4f 44 45 20 3d 20 31 2c 0d 0a REEN_MODE = 1,.. 0470: 09 09 43 4f 4e 53 4f 4c 45 5f 57 49 4e 44 4f 57 ..CONSOLE_WINDOW 0480: 45 44 5f 4d 4f 44 45 20 20 20 3d 20 30 0d 0a 09 ED_MODE = 0... 0490: 7d 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a }..}....enum {.. 04a0: 09 43 54 52 4c 5f 43 5f 45 56 45 4e 54 20 20 20 .CTRL_C_EVENT 04b0: 20 20 20 20 20 3d 20 30 2c 0d 0a 09 43 54 52 4c = 0,...CTRL 04c0: 5f 42 52 45 41 4b 5f 45 56 45 4e 54 20 20 20 20 _BREAK_EVENT 04d0: 3d 20 31 2c 0d 0a 09 43 54 52 4c 5f 43 4c 4f 53 = 1,...CTRL_CLOS 04e0: 45 5f 45 56 45 4e 54 20 20 20 20 3d 20 32 2c 0d E_EVENT = 2,. 04f0: 0a 09 43 54 52 4c 5f 4c 4f 47 4f 46 46 5f 45 56 ..CTRL_LOGOFF_EV 0500: 45 4e 54 20 20 20 3d 20 35 2c 0d 0a 09 43 54 52 ENT = 5,...CTR 0510: 4c 5f 53 48 55 54 44 4f 57 4e 5f 45 56 45 4e 54 L_SHUTDOWN_EVENT 0520: 20 3d 20 36 0d 0a 7d 0d 0a 0d 0a 65 6e 75 6d 20 = 6..}....enum 0530: 7b 0d 0a 09 45 4e 41 42 4c 45 5f 50 52 4f 43 45 {...ENABLE_PROCE 0540: 53 53 45 44 5f 49 4e 50 55 54 20 20 3d 20 31 2c SSED_INPUT = 1, 0550: 0d 0a 09 45 4e 41 42 4c 45 5f 4c 49 4e 45 5f 49 ...ENABLE_LINE_I 0560: 4e 50 55 54 20 20 20 20 20 20 20 3d 20 32 2c 0d NPUT = 2,. 0570: 0a 09 45 4e 41 42 4c 45 5f 45 43 48 4f 5f 49 4e ..ENABLE_ECHO_IN 0580: 50 55 54 20 20 20 20 20 20 20 3d 20 34 2c 0d 0a PUT = 4,.. 0590: 09 45 4e 41 42 4c 45 5f 57 49 4e 44 4f 57 5f 49 .ENABLE_WINDOW_I 05a0: 4e 50 55 54 20 20 20 20 20 3d 20 38 2c 0d 0a 09 NPUT = 8,... 05b0: 45 4e 41 42 4c 45 5f 4d 4f 55 53 45 5f 49 4e 50 ENABLE_MOUSE_INP 05c0: 55 54 20 20 20 20 20 20 3d 20 31 36 0d 0a 7d 0d UT = 16..}. 05d0: 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 45 4e 41 42 ...enum {...ENAB 05e0: 4c 45 5f 50 52 4f 43 45 53 53 45 44 5f 4f 55 54 LE_PROCESSED_OUT 05f0: 50 55 54 20 20 20 20 3d 20 31 2c 0d 0a 09 45 4e PUT = 1,...EN 0600: 41 42 4c 45 5f 57 52 41 50 5f 41 54 5f 45 4f 4c ABLE_WRAP_AT_EOL 0610: 5f 4f 55 54 50 55 54 20 20 3d 20 32 0d 0a 7d 0d _OUTPUT = 2..}. 0620: 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 4b 45 59 5f ...enum {...KEY_ 0630: 45 56 45 4e 54 20 20 20 20 20 20 20 20 20 20 20 EVENT 0640: 20 20 20 20 20 20 3d 20 31 2c 0d 0a 09 4d 4f 55 = 1,...MOU 0650: 53 45 5f 45 56 45 4e 54 20 20 20 20 20 20 20 20 SE_EVENT 0660: 20 20 20 20 20 20 20 3d 20 32 2c 0d 0a 09 57 49 = 2,...WI 0670: 4e 44 4f 57 5f 42 55 46 46 45 52 5f 53 49 5a 45 NDOW_BUFFER_SIZE 0680: 5f 45 56 45 4e 54 20 20 3d 20 34 2c 0d 0a 09 4d _EVENT = 4,...M 0690: 45 4e 55 5f 45 56 45 4e 54 20 20 20 20 20 20 20 ENU_EVENT 06a0: 20 20 20 20 20 20 20 20 20 3d 20 38 2c 0d 0a 09 = 8,... 06b0: 46 4f 43 55 53 5f 45 56 45 4e 54 20 20 20 20 20 FOCUS_EVENT 06c0: 20 20 20 20 20 20 20 20 20 20 3d 20 31 36 0d 0a = 16.. 06d0: 7d 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 52 49 47 48 }..enum {...RIGH 06e0: 54 5f 41 4c 54 5f 50 52 45 53 53 45 44 20 20 3d T_ALT_PRESSED = 06f0: 20 31 2c 0d 0a 09 4c 45 46 54 5f 41 4c 54 5f 50 1,...LEFT_ALT_P 0700: 52 45 53 53 45 44 20 20 20 3d 20 32 2c 0d 0a 09 RESSED = 2,... 0710: 52 49 47 48 54 5f 43 54 52 4c 5f 50 52 45 53 53 RIGHT_CTRL_PRESS 0720: 45 44 20 3d 20 34 2c 0d 0a 09 4c 45 46 54 5f 43 ED = 4,...LEFT_C 0730: 54 52 4c 5f 50 52 45 53 53 45 44 20 20 3d 20 38 TRL_PRESSED = 8 0740: 2c 0d 0a 09 53 48 49 46 54 5f 50 52 45 53 53 45 ,...SHIFT_PRESSE 0750: 44 20 20 20 20 20 20 3d 20 31 36 2c 0d 0a 09 4e D = 16,...N 0760: 55 4d 4c 4f 43 4b 5f 4f 4e 20 20 20 20 20 20 20 UMLOCK_ON 0770: 20 20 3d 20 33 32 2c 0d 0a 09 53 43 52 4f 4c 4c = 32,...SCROLL 0780: 4c 4f 43 4b 5f 4f 4e 20 20 20 20 20 20 3d 20 36 LOCK_ON = 6 0790: 34 2c 0d 0a 09 43 41 50 53 4c 4f 43 4b 5f 4f 4e 4,...CAPSLOCK_ON 07a0: 20 20 20 20 20 20 20 20 3d 20 31 32 38 2c 0d 0a = 128,.. 07b0: 09 45 4e 48 41 4e 43 45 44 5f 4b 45 59 20 20 20 .ENHANCED_KEY 07c0: 20 20 20 20 3d 20 32 35 36 0d 0a 7d 0d 0a 65 6e = 256..}..en 07d0: 75 6d 20 7b 0d 0a 09 46 52 4f 4d 5f 4c 45 46 54 um {...FROM_LEFT 07e0: 5f 31 53 54 5f 42 55 54 54 4f 4e 5f 50 52 45 53 _1ST_BUTTON_PRES 07f0: 53 45 44 20 20 3d 20 31 2c 0d 0a 09 52 49 47 48 SED = 1,...RIGH 0800: 54 4d 4f 53 54 5f 42 55 54 54 4f 4e 5f 50 52 45 TMOST_BUTTON_PRE 0810: 53 53 45 44 20 20 20 20 20 20 3d 20 32 2c 0d 0a SSED = 2,.. 0820: 09 46 52 4f 4d 5f 4c 45 46 54 5f 32 4e 44 5f 42 .FROM_LEFT_2ND_B 0830: 55 54 54 4f 4e 5f 50 52 45 53 53 45 44 20 20 3d UTTON_PRESSED = 0840: 20 34 2c 0d 0a 09 46 52 4f 4d 5f 4c 45 46 54 5f 4,...FROM_LEFT_ 0850: 33 52 44 5f 42 55 54 54 4f 4e 5f 50 52 45 53 53 3RD_BUTTON_PRESS 0860: 45 44 20 20 3d 20 38 2c 0d 0a 09 46 52 4f 4d 5f ED = 8,...FROM_ 0870: 4c 45 46 54 5f 34 54 48 5f 42 55 54 54 4f 4e 5f LEFT_4TH_BUTTON_ 0880: 50 52 45 53 53 45 44 20 20 3d 20 31 36 0d 0a 7d PRESSED = 16..} 0890: 0d 0a 0d 0a 65 6e 75 6d 20 7b 0d 0a 09 4d 4f 55 ....enum {...MOU 08a0: 53 45 5f 4d 4f 56 45 44 20 20 20 3d 20 31 2c 0d SE_MOVED = 1,. 08b0: 0a 09 44 4f 55 42 4c 45 5f 43 4c 49 43 4b 20 20 ..DOUBLE_CLICK 08c0: 3d 20 32 2c 0d 0a 09 4d 4f 55 53 45 5f 57 48 45 = 2,...MOUSE_WHE 08d0: 45 4c 45 44 20 3d 20 34 0d 0a 7d 0d 0a 0d 0a 73 ELED = 4..}....s 08e0: 74 72 75 63 74 20 43 48 41 52 5f 49 4e 46 4f 20 truct CHAR_INFO 08f0: 7b 0d 0a 09 75 6e 69 6f 6e 20 5f 43 68 61 72 20 {...union _Char 0900: 7b 0d 0a 09 09 57 43 48 41 52 20 55 6e 69 63 6f {....WCHAR Unico 0910: 64 65 43 68 61 72 3b 0d 0a 09 09 43 48 41 52 20 deChar;....CHAR 0920: 41 73 63 69 69 43 68 61 72 3b 0d 0a 09 7d 0d 0a AsciiChar;...}.. 0930: 09 5f 43 68 61 72 20 43 68 61 72 3b 09 0d 0a 09 ._Char Char;.... 0940: 57 4f 52 44 20 41 74 74 72 69 62 75 74 65 73 3b WORD Attributes; 0950: 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 48 41 52 5f ..}..alias CHAR_ 0960: 49 4e 46 4f 2a 20 50 43 48 41 52 5f 49 4e 46 4f INFO* PCHAR_INFO 0970: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 53 4d 41 4c ;....struct SMAL 0980: 4c 5f 52 45 43 54 20 7b 0d 0a 09 53 48 4f 52 54 L_RECT {...SHORT 0990: 20 4c 65 66 74 3b 0d 0a 09 53 48 4f 52 54 20 54 Left;...SHORT T 09a0: 6f 70 3b 0d 0a 09 53 48 4f 52 54 20 52 69 67 68 op;...SHORT Righ 09b0: 74 3b 0d 0a 09 53 48 4f 52 54 20 42 6f 74 74 6f t;...SHORT Botto 09c0: 6d 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 53 4d 41 m;..}..alias SMA 09d0: 4c 4c 5f 52 45 43 54 2a 20 50 53 4d 41 4c 4c 5f LL_RECT* PSMALL_ 09e0: 52 45 43 54 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 RECT;....struct 09f0: 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 5f 49 CONSOLE_CURSOR_I 0a00: 4e 46 4f 20 7b 0d 0a 09 44 57 4f 52 44 20 64 77 NFO {...DWORD dw 0a10: 53 69 7a 65 3b 0d 0a 09 42 4f 4f 4c 20 20 62 56 Size;...BOOL bV 0a20: 69 73 69 62 6c 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 isible;..}..alia 0a30: 73 20 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 s CONSOLE_CURSOR 0a40: 5f 49 4e 46 4f 2a 20 50 43 4f 4e 53 4f 4c 45 5f _INFO* PCONSOLE_ 0a50: 43 55 52 53 4f 52 5f 49 4e 46 4f 3b 0d 0a 0d 0a CURSOR_INFO;.... 0a60: 73 74 72 75 63 74 20 43 4f 4f 52 44 20 7b 0d 0a struct COORD {.. 0a70: 09 53 48 4f 52 54 20 58 3b 0d 0a 09 53 48 4f 52 .SHORT X;...SHOR 0a80: 54 20 59 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 43 T Y;..}..alias C 0a90: 4f 4f 52 44 2a 20 50 43 4f 4f 52 44 3b 0d 0a 0d OORD* PCOORD;... 0aa0: 0a 73 74 72 75 63 74 20 43 4f 4e 53 4f 4c 45 5f .struct CONSOLE_ 0ab0: 46 4f 4e 54 5f 49 4e 46 4f 20 7b 0d 0a 09 44 57 FONT_INFO {...DW 0ac0: 4f 52 44 20 6e 46 6f 6e 74 3b 0d 0a 09 43 4f 4f ORD nFont;...COO 0ad0: 52 44 20 64 77 46 6f 6e 74 53 69 7a 65 3b 0d 0a RD dwFontSize;.. 0ae0: 7d 0d 0a 61 6c 69 61 73 20 43 4f 4e 53 4f 4c 45 }..alias CONSOLE 0af0: 5f 46 4f 4e 54 5f 49 4e 46 4f 2a 20 50 43 4f 4e _FONT_INFO* PCON 0b00: 53 4f 4c 45 5f 46 4f 4e 54 5f 49 4e 46 4f 3b 0d SOLE_FONT_INFO;. 0b10: 0a 0d 0a 73 74 72 75 63 74 20 43 4f 4e 53 4f 4c ...struct CONSOL 0b20: 45 5f 53 43 52 45 45 4e 5f 42 55 46 46 45 52 5f E_SCREEN_BUFFER_ 0b30: 49 4e 46 4f 20 7b 0d 0a 09 43 4f 4f 52 44 20 20 INFO {...COORD 0b40: 20 20 20 20 64 77 53 69 7a 65 3b 0d 0a 09 43 4f dwSize;...CO 0b50: 4f 52 44 20 20 20 20 20 20 64 77 43 75 72 73 6f ORD dwCurso 0b60: 72 50 6f 73 69 74 69 6f 6e 3b 0d 0a 09 57 4f 52 rPosition;...WOR 0b70: 44 20 20 20 20 20 20 20 77 41 74 74 72 69 62 75 D wAttribu 0b80: 74 65 73 3b 0d 0a 09 53 4d 41 4c 4c 5f 52 45 43 tes;...SMALL_REC 0b90: 54 20 73 72 57 69 6e 64 6f 77 3b 0d 0a 09 43 4f T srWindow;...CO 0ba0: 4f 52 44 20 20 20 20 20 20 64 77 4d 61 78 69 6d ORD dwMaxim 0bb0: 75 6d 57 69 6e 64 6f 77 53 69 7a 65 3b 0d 0a 7d umWindowSize;..} 0bc0: 0d 0a 61 6c 69 61 73 20 43 4f 4e 53 4f 4c 45 5f ..alias CONSOLE_ 0bd0: 53 43 52 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e SCREEN_BUFFER_IN 0be0: 46 4f 2a 20 50 43 4f 4e 53 4f 4c 45 5f 53 43 52 FO* PCONSOLE_SCR 0bf0: 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e 46 4f 3b EEN_BUFFER_INFO; 0c00: 0d 0a 0d 0a 61 6c 69 61 73 20 42 4f 4f 4c 20 66 ....alias BOOL f 0c10: 75 6e 63 74 69 6f 6e 28 44 57 4f 52 44 29 20 50 unction(DWORD) P 0c20: 48 41 4e 44 4c 45 52 5f 52 4f 55 54 49 4e 45 3b HANDLER_ROUTINE; 0c30: 0d 0a 0d 0a 73 74 72 75 63 74 20 4b 45 59 5f 45 ....struct KEY_E 0c40: 56 45 4e 54 5f 52 45 43 4f 52 44 20 7b 0d 0a 09 VENT_RECORD {... 0c50: 42 4f 4f 4c 20 20 62 4b 65 79 44 6f 77 6e 3b 0d BOOL bKeyDown;. 0c60: 0a 09 57 4f 52 44 20 20 77 52 65 70 65 61 74 43 ..WORD wRepeatC 0c70: 6f 75 6e 74 3b 0d 0a 09 57 4f 52 44 20 20 77 56 ount;...WORD wV 0c80: 69 72 74 75 61 6c 4b 65 79 43 6f 64 65 3b 0d 0a irtualKeyCode;.. 0c90: 09 57 4f 52 44 20 20 77 56 69 72 74 75 61 6c 53 .WORD wVirtualS 0ca0: 63 61 6e 43 6f 64 65 3b 0d 0a 09 75 6e 69 6f 6e canCode;...union 0cb0: 20 5f 75 43 68 61 72 20 7b 0d 0a 09 09 57 43 48 _uChar {....WCH 0cc0: 41 52 20 55 6e 69 63 6f 64 65 43 68 61 72 3b 0d AR UnicodeChar;. 0cd0: 0a 09 09 43 48 41 52 20 20 41 73 63 69 69 43 68 ...CHAR AsciiCh 0ce0: 61 72 3b 0d 0a 09 7d 0d 0a 09 5f 75 43 68 61 72 ar;...}..._uChar 0cf0: 20 75 43 68 61 72 3b 09 0d 0a 09 44 57 4f 52 44 uChar;....DWORD 0d00: 20 64 77 43 6f 6e 74 72 6f 6c 4b 65 79 53 74 61 dwControlKeySta 0d10: 74 65 3b 0d 0a 7d 0d 0a 0d 0a 73 74 72 75 63 74 te;..}....struct 0d20: 20 4d 4f 55 53 45 5f 45 56 45 4e 54 5f 52 45 43 MOUSE_EVENT_REC 0d30: 4f 52 44 20 7b 0d 0a 09 43 4f 4f 52 44 20 64 77 ORD {...COORD dw 0d40: 4d 6f 75 73 65 50 6f 73 69 74 69 6f 6e 3b 0d 0a MousePosition;.. 0d50: 09 44 57 4f 52 44 20 64 77 42 75 74 74 6f 6e 53 .DWORD dwButtonS 0d60: 74 61 74 65 3b 0d 0a 09 44 57 4f 52 44 20 64 77 tate;...DWORD dw 0d70: 43 6f 6e 74 72 6f 6c 4b 65 79 53 74 61 74 65 3b ControlKeyState; 0d80: 0d 0a 09 44 57 4f 52 44 20 64 77 45 76 65 6e 74 ...DWORD dwEvent 0d90: 46 6c 61 67 73 3b 0d 0a 7d 0d 0a 0d 0a 73 74 72 Flags;..}....str 0da0: 75 63 74 20 57 49 4e 44 4f 57 5f 42 55 46 46 45 uct WINDOW_BUFFE 0db0: 52 5f 53 49 5a 45 5f 52 45 43 4f 52 44 20 7b 0d R_SIZE_RECORD {. 0dc0: 0a 09 43 4f 4f 52 44 20 64 77 53 69 7a 65 3b 0d ..COORD dwSize;. 0dd0: 0a 7d 0d 0a 0d 0a 73 74 72 75 63 74 20 4d 45 4e .}....struct MEN 0de0: 55 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 7b U_EVENT_RECORD { 0df0: 0d 0a 09 55 49 4e 54 20 64 77 43 6f 6d 6d 61 6e ...UINT dwComman 0e00: 64 49 64 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 4d dId;..}..alias M 0e10: 45 4e 55 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 ENU_EVENT_RECORD 0e20: 2a 20 50 4d 45 4e 55 5f 45 56 45 4e 54 5f 52 45 * PMENU_EVENT_RE 0e30: 43 4f 52 44 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 CORD;....struct 0e40: 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 45 43 4f FOCUS_EVENT_RECO 0e50: 52 44 20 7b 0d 0a 09 42 4f 4f 4c 20 62 53 65 74 RD {...BOOL bSet 0e60: 46 6f 63 75 73 3b 0d 0a 7d 0d 0a 0d 0a 73 74 72 Focus;..}....str 0e70: 75 63 74 20 49 4e 50 55 54 5f 52 45 43 4f 52 44 uct INPUT_RECORD 0e80: 20 7b 0d 0a 09 57 4f 52 44 20 45 76 65 6e 74 54 {...WORD EventT 0e90: 79 70 65 3b 0d 0a 09 75 6e 69 6f 6e 20 5f 45 76 ype;...union _Ev 0ea0: 65 6e 74 20 7b 0d 0a 09 09 4b 45 59 5f 45 56 45 ent {....KEY_EVE 0eb0: 4e 54 5f 52 45 43 4f 52 44 20 4b 65 79 45 76 65 NT_RECORD KeyEve 0ec0: 6e 74 3b 0d 0a 09 09 4d 4f 55 53 45 5f 45 56 45 nt;....MOUSE_EVE 0ed0: 4e 54 5f 52 45 43 4f 52 44 20 4d 6f 75 73 65 45 NT_RECORD MouseE 0ee0: 76 65 6e 74 3b 0d 0a 09 09 57 49 4e 44 4f 57 5f vent;....WINDOW_ 0ef0: 42 55 46 46 45 52 5f 53 49 5a 45 5f 52 45 43 4f BUFFER_SIZE_RECO 0f00: 52 44 20 57 69 6e 64 6f 77 42 75 66 66 65 72 53 RD WindowBufferS 0f10: 69 7a 65 45 76 65 6e 74 3b 0d 0a 09 09 4d 45 4e izeEvent;....MEN 0f20: 55 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 4d U_EVENT_RECORD M 0f30: 65 6e 75 45 76 65 6e 74 3b 0d 0a 09 09 46 4f 43 enuEvent;....FOC 0f40: 55 53 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 US_EVENT_RECORD 0f50: 46 6f 63 75 73 45 76 65 6e 74 3b 0d 0a 09 7d 0d FocusEvent;...}. 0f60: 0a 09 5f 45 76 65 6e 74 20 45 76 65 6e 74 3b 09 .._Event Event;. 0f70: 0d 0a 7d 0d 0a 61 6c 69 61 73 20 49 4e 50 55 54 ..}..alias INPUT 0f80: 5f 52 45 43 4f 52 44 2a 20 50 49 4e 50 55 54 5f _RECORD* PINPUT_ 0f90: 52 45 43 4f 52 44 3b 0d 0a 0d 0a 65 78 74 65 72 RECORD;....exter 0fa0: 6e 20 28 57 69 6e 64 6f 77 73 29 3a 0d 0a 0d 0a n (Windows):.... 0fb0: 42 4f 4f 4c 20 41 6c 6c 6f 63 43 6f 6e 73 6f 6c BOOL AllocConsol 0fc0: 65 28 29 3b 0d 0a 48 41 4e 44 4c 45 20 43 72 65 e();..HANDLE Cre 0fd0: 61 74 65 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e ateConsoleScreen 0fe0: 42 75 66 66 65 72 28 44 57 4f 52 44 2c 20 44 57 Buffer(DWORD, DW 0ff0: 4f 52 44 2c 20 53 45 43 55 52 49 54 59 5f 41 54 ORD, SECURITY_AT 1000: 54 52 49 42 55 54 45 53 2a 2c 20 44 57 4f 52 44 TRIBUTES*, DWORD 1010: 2c 20 4c 50 56 4f 49 44 29 3b 0d 0a 42 4f 4f 4c , LPVOID);..BOOL 1020: 20 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 FillConsoleOutp 1030: 75 74 41 74 74 72 69 62 75 74 65 28 48 41 4e 44 utAttribute(HAND 1040: 4c 45 2c 20 57 4f 52 44 2c 20 44 57 4f 52 44 2c LE, WORD, DWORD, 1050: 20 43 4f 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b COORD, PDWORD); 1060: 0d 0a 42 4f 4f 4c 20 46 69 6c 6c 43 6f 6e 73 6f ..BOOL FillConso 1070: 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 leOutputCharacte 1080: 72 41 28 48 41 4e 44 4c 45 2c 20 43 48 41 52 2c rA(HANDLE, CHAR, 1090: 20 44 57 4f 52 44 2c 20 43 4f 4f 52 44 2c 20 50 DWORD, COORD, P 10a0: 44 57 4f 52 44 29 3b 0d 0a 42 4f 4f 4c 20 46 69 DWORD);..BOOL Fi 10b0: 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 llConsoleOutputC 10c0: 68 61 72 61 63 74 65 72 57 28 48 41 4e 44 4c 45 haracterW(HANDLE 10d0: 2c 20 57 43 48 41 52 2c 20 44 57 4f 52 44 2c 20 , WCHAR, DWORD, 10e0: 43 4f 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d COORD, PDWORD);. 10f0: 0a 42 4f 4f 4c 20 46 6c 75 73 68 43 6f 6e 73 6f .BOOL FlushConso 1100: 6c 65 49 6e 70 75 74 42 75 66 66 65 72 28 48 41 leInputBuffer(HA 1110: 4e 44 4c 45 29 3b 0d 0a 42 4f 4f 4c 20 46 72 65 NDLE);..BOOL Fre 1120: 65 43 6f 6e 73 6f 6c 65 28 29 3b 0d 0a 42 4f 4f eConsole();..BOO 1130: 4c 20 47 65 6e 65 72 61 74 65 43 6f 6e 73 6f 6c L GenerateConsol 1140: 65 43 74 72 6c 45 76 65 6e 74 28 44 57 4f 52 44 eCtrlEvent(DWORD 1150: 2c 20 44 57 4f 52 44 29 3b 0d 0a 55 49 4e 54 20 , DWORD);..UINT 1160: 47 65 74 43 6f 6e 73 6f 6c 65 43 50 28 29 3b 0d GetConsoleCP();. 1170: 0a 42 4f 4f 4c 20 47 65 74 43 6f 6e 73 6f 6c 65 .BOOL GetConsole 1180: 43 75 72 73 6f 72 49 6e 66 6f 28 48 41 4e 44 4c CursorInfo(HANDL 1190: 45 2c 20 50 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 E, PCONSOLE_CURS 11a0: 4f 52 5f 49 4e 46 4f 29 3b 0d 0a 42 4f 4f 4c 20 OR_INFO);..BOOL 11b0: 47 65 74 43 6f 6e 73 6f 6c 65 4d 6f 64 65 28 48 GetConsoleMode(H 11c0: 41 4e 44 4c 45 2c 50 44 57 4f 52 44 29 3b 0d 0a ANDLE,PDWORD);.. 11d0: 55 49 4e 54 20 47 65 74 43 6f 6e 73 6f 6c 65 4f UINT GetConsoleO 11e0: 75 74 70 75 74 43 50 28 29 3b 0d 0a 42 4f 4f 4c utputCP();..BOOL 11f0: 20 47 65 74 43 6f 6e 73 6f 6c 65 53 63 72 65 65 GetConsoleScree 1200: 6e 42 75 66 66 65 72 49 6e 66 6f 28 48 41 4e 44 nBufferInfo(HAND 1210: 4c 45 2c 20 50 43 4f 4e 53 4f 4c 45 5f 53 43 52 LE, PCONSOLE_SCR 1220: 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e 46 4f 29 EEN_BUFFER_INFO) 1230: 3b 0d 0a 44 57 4f 52 44 20 47 65 74 43 6f 6e 73 ;..DWORD GetCons 1240: 6f 6c 65 54 69 74 6c 65 41 28 4c 50 53 54 52 2c oleTitleA(LPSTR, 1250: 20 44 57 4f 52 44 29 3b 0d 0a 44 57 4f 52 44 20 DWORD);..DWORD 1260: 47 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 57 GetConsoleTitleW 1270: 28 4c 50 57 53 54 52 2c 20 44 57 4f 52 44 29 3b (LPWSTR, DWORD); 1280: 0d 0a 43 4f 4f 52 44 20 47 65 74 4c 61 72 67 65 ..COORD GetLarge 1290: 73 74 43 6f 6e 73 6f 6c 65 57 69 6e 64 6f 77 53 stConsoleWindowS 12a0: 69 7a 65 28 48 41 4e 44 4c 45 29 3b 0d 0a 42 4f ize(HANDLE);..BO 12b0: 4f 4c 20 47 65 74 4e 75 6d 62 65 72 4f 66 43 6f OL GetNumberOfCo 12c0: 6e 73 6f 6c 65 49 6e 70 75 74 45 76 65 6e 74 73 nsoleInputEvents 12d0: 28 48 41 4e 44 4c 45 2c 20 50 44 57 4f 52 44 29 (HANDLE, PDWORD) 12e0: 3b 0d 0a 42 4f 4f 4c 20 47 65 74 4e 75 6d 62 65 ;..BOOL GetNumbe 12f0: 72 4f 66 43 6f 6e 73 6f 6c 65 4d 6f 75 73 65 42 rOfConsoleMouseB 1300: 75 74 74 6f 6e 73 28 50 44 57 4f 52 44 29 3b 0d uttons(PDWORD);. 1310: 0a 42 4f 4f 4c 20 50 65 65 6b 43 6f 6e 73 6f 6c .BOOL PeekConsol 1320: 65 49 6e 70 75 74 41 28 48 41 4e 44 4c 45 2c 20 eInputA(HANDLE, 1330: 50 49 4e 50 55 54 5f 52 45 43 4f 52 44 2c 20 44 PINPUT_RECORD, D 1340: 57 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d 0a WORD, PDWORD);.. 1350: 42 4f 4f 4c 20 50 65 65 6b 43 6f 6e 73 6f 6c 65 BOOL PeekConsole 1360: 49 6e 70 75 74 57 28 48 41 4e 44 4c 45 2c 20 50 InputW(HANDLE, P 1370: 49 4e 50 55 54 5f 52 45 43 4f 52 44 2c 20 44 57 INPUT_RECORD, DW 1380: 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d 0a 42 ORD, PDWORD);..B 1390: 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 41 OOL ReadConsoleA 13a0: 28 48 41 4e 44 4c 45 2c 20 50 56 4f 49 44 2c 20 (HANDLE, PVOID, 13b0: 44 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 50 DWORD, PDWORD, P 13c0: 56 4f 49 44 29 3b 0d 0a 42 4f 4f 4c 20 52 65 61 VOID);..BOOL Rea 13d0: 64 43 6f 6e 73 6f 6c 65 57 28 48 41 4e 44 4c 45 dConsoleW(HANDLE 13e0: 2c 20 50 56 4f 49 44 2c 20 44 57 4f 52 44 2c 20 , PVOID, DWORD, 13f0: 50 44 57 4f 52 44 2c 20 50 56 4f 49 44 29 3b 0d PDWORD, PVOID);. 1400: 0a 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c .BOOL ReadConsol 1410: 65 49 6e 70 75 74 41 28 48 41 4e 44 4c 45 2c 20 eInputA(HANDLE, 1420: 50 49 4e 50 55 54 5f 52 45 43 4f 52 44 2c 20 44 PINPUT_RECORD, D 1430: 57 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d 0a WORD, PDWORD);.. 1440: 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 BOOL ReadConsole 1450: 49 6e 70 75 74 57 28 48 41 4e 44 4c 45 2c 20 50 InputW(HANDLE, P 1460: 49 4e 50 55 54 5f 52 45 43 4f 52 44 2c 20 44 57 INPUT_RECORD, DW 1470: 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d 0a 42 ORD, PDWORD);..B 1480: 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f OOL ReadConsoleO 1490: 75 74 70 75 74 41 74 74 72 69 62 75 74 65 28 48 utputAttribute(H 14a0: 41 4e 44 4c 45 2c 20 4c 50 57 4f 52 44 2c 20 44 ANDLE, LPWORD, D 14b0: 57 4f 52 44 2c 20 43 4f 4f 52 44 2c 20 4c 50 44 WORD, COORD, LPD 14c0: 57 4f 52 44 29 3b 0d 0a 42 4f 4f 4c 20 52 65 61 WORD);..BOOL Rea 14d0: 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 dConsoleOutputCh 14e0: 61 72 61 63 74 65 72 41 28 48 41 4e 44 4c 45 2c aracterA(HANDLE, 14f0: 20 4c 50 53 54 52 2c 20 44 57 4f 52 44 2c 20 43 LPSTR, DWORD, C 1500: 4f 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d 0a OORD, PDWORD);.. 1510: 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 BOOL ReadConsole 1520: 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 72 57 OutputCharacterW 1530: 28 48 41 4e 44 4c 45 2c 20 4c 50 57 53 54 52 2c (HANDLE, LPWSTR, 1540: 20 44 57 4f 52 44 2c 20 43 4f 4f 52 44 2c 20 50 DWORD, COORD, P 1550: 44 57 4f 52 44 29 3b 0d 0a 42 4f 4f 4c 20 52 65 DWORD);..BOOL Re 1560: 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 41 adConsoleOutputA 1570: 28 48 41 4e 44 4c 45 2c 20 50 43 48 41 52 5f 49 (HANDLE, PCHAR_I 1580: 4e 46 4f 2c 20 43 4f 4f 52 44 2c 20 43 4f 4f 52 NFO, COORD, COOR 1590: 44 2c 20 50 53 4d 41 4c 4c 5f 52 45 43 54 29 3b D, PSMALL_RECT); 15a0: 0d 0a 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f ..BOOL ReadConso 15b0: 6c 65 4f 75 74 70 75 74 57 28 48 41 4e 44 4c 45 leOutputW(HANDLE 15c0: 2c 20 50 43 48 41 52 5f 49 4e 46 4f 2c 20 43 4f , PCHAR_INFO, CO 15d0: 4f 52 44 2c 20 43 4f 4f 52 44 2c 20 50 53 4d 41 ORD, COORD, PSMA 15e0: 4c 4c 5f 52 45 43 54 29 3b 0d 0a 42 4f 4f 4c 20 LL_RECT);..BOOL 15f0: 53 63 72 6f 6c 6c 43 6f 6e 73 6f 6c 65 53 63 72 ScrollConsoleScr 1600: 65 65 6e 42 75 66 66 65 72 41 28 48 41 4e 44 4c eenBufferA(HANDL 1610: 45 2c 20 63 6f 6e 73 74 28 53 4d 41 4c 4c 5f 52 E, const(SMALL_R 1620: 45 43 54 29 2a 2c 20 63 6f 6e 73 74 28 53 4d 41 ECT)*, const(SMA 1630: 4c 4c 5f 52 45 43 54 29 2a 2c 20 43 4f 4f 52 44 LL_RECT)*, COORD 1640: 2c 20 63 6f 6e 73 74 28 43 48 41 52 5f 49 4e 46 , const(CHAR_INF 1650: 4f 29 2a 29 3b 0d 0a 42 4f 4f 4c 20 53 63 72 6f O)*);..BOOL Scro 1660: 6c 6c 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 llConsoleScreenB 1670: 75 66 66 65 72 57 28 48 41 4e 44 4c 45 2c 20 63 ufferW(HANDLE, c 1680: 6f 6e 73 74 28 53 4d 41 4c 4c 5f 52 45 43 54 29 onst(SMALL_RECT) 1690: 2a 2c 20 63 6f 6e 73 74 28 53 4d 41 4c 4c 5f 52 *, const(SMALL_R 16a0: 45 43 54 29 2a 2c 20 43 4f 4f 52 44 2c 20 63 6f ECT)*, COORD, co 16b0: 6e 73 74 28 43 48 41 52 5f 49 4e 46 4f 29 2a 29 nst(CHAR_INFO)*) 16c0: 3b 0d 0a 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f ;..BOOL SetConso 16d0: 6c 65 41 63 74 69 76 65 53 63 72 65 65 6e 42 75 leActiveScreenBu 16e0: 66 66 65 72 28 48 41 4e 44 4c 45 29 3b 0d 0a 42 ffer(HANDLE);..B 16f0: 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 43 50 OOL SetConsoleCP 1700: 28 55 49 4e 54 29 3b 0d 0a 42 4f 4f 4c 20 53 65 (UINT);..BOOL Se 1710: 74 43 6f 6e 73 6f 6c 65 43 74 72 6c 48 61 6e 64 tConsoleCtrlHand 1720: 6c 65 72 28 50 48 41 4e 44 4c 45 52 5f 52 4f 55 ler(PHANDLER_ROU 1730: 54 49 4e 45 2c 20 42 4f 4f 4c 29 3b 0d 0a 42 4f TINE, BOOL);..BO 1740: 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 43 75 72 OL SetConsoleCur 1750: 73 6f 72 49 6e 66 6f 28 48 41 4e 44 4c 45 2c 20 sorInfo(HANDLE, 1760: 63 6f 6e 73 74 28 43 4f 4e 53 4f 4c 45 5f 43 55 const(CONSOLE_CU 1770: 52 53 4f 52 5f 49 4e 46 4f 29 2a 29 3b 0d 0a 42 RSOR_INFO)*);..B 1780: 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 43 75 OOL SetConsoleCu 1790: 72 73 6f 72 50 6f 73 69 74 69 6f 6e 28 48 41 4e rsorPosition(HAN 17a0: 44 4c 45 2c 20 43 4f 4f 52 44 29 3b 0d 0a 0d 0a DLE, COORD);.... 17b0: 0d 0a 73 74 61 74 69 63 20 69 66 20 28 5f 57 49 ..static if (_WI 17c0: 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 35 N32_WINNT >= 0x5 17d0: 30 30 29 20 7b 0d 0a 42 4f 4f 4c 20 47 65 74 43 00) {..BOOL GetC 17e0: 6f 6e 73 6f 6c 65 44 69 73 70 6c 61 79 4d 6f 64 onsoleDisplayMod 17f0: 65 28 4c 50 44 57 4f 52 44 29 3b 0d 0a 48 57 4e e(LPDWORD);..HWN 1800: 44 20 47 65 74 43 6f 6e 73 6f 6c 65 57 69 6e 64 D GetConsoleWind 1810: 6f 77 28 29 3b 0d 0a 7d 0d 0a 0d 0a 73 74 61 74 ow();..}....stat 1820: 69 63 20 69 66 20 28 5f 57 49 4e 33 32 5f 57 49 ic if (_WIN32_WI 1830: 4e 4e 54 20 3e 3d 20 30 78 35 30 31 29 20 7b 0d NNT >= 0x501) {. 1840: 0a 42 4f 4f 4c 20 41 74 74 61 63 68 43 6f 6e 73 .BOOL AttachCons 1850: 6f 6c 65 28 44 57 4f 52 44 29 3b 0d 0a 42 4f 4f ole(DWORD);..BOO 1860: 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 44 69 73 70 L SetConsoleDisp 1870: 6c 61 79 4d 6f 64 65 28 48 41 4e 44 4c 45 2c 20 layMode(HANDLE, 1880: 44 57 4f 52 44 2c 20 50 43 4f 4f 52 44 29 3b 0d DWORD, PCOORD);. 1890: 0a 63 6f 6e 73 74 20 44 57 4f 52 44 20 41 54 54 .const DWORD ATT 18a0: 41 43 48 5f 50 41 52 45 4e 54 5f 50 52 4f 43 45 ACH_PARENT_PROCE 18b0: 53 53 20 3d 20 63 61 73 74 28 44 57 4f 52 44 29 SS = cast(DWORD) 18c0: 2d 31 3b 0d 0a 7d 0d 0a 0d 0a 42 4f 4f 4c 20 53 -1;..}....BOOL S 18d0: 65 74 43 6f 6e 73 6f 6c 65 4d 6f 64 65 28 48 41 etConsoleMode(HA 18e0: 4e 44 4c 45 2c 20 44 57 4f 52 44 29 3b 0d 0a 42 NDLE, DWORD);..B 18f0: 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 4f 75 OOL SetConsoleOu 1900: 74 70 75 74 43 50 28 55 49 4e 54 29 3b 0d 0a 42 tputCP(UINT);..B 1910: 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 53 63 OOL SetConsoleSc 1920: 72 65 65 6e 42 75 66 66 65 72 53 69 7a 65 28 48 reenBufferSize(H 1930: 41 4e 44 4c 45 2c 20 43 4f 4f 52 44 29 3b 0d 0a ANDLE, COORD);.. 1940: 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 54 BOOL SetConsoleT 1950: 65 78 74 41 74 74 72 69 62 75 74 65 28 48 41 4e extAttribute(HAN 1960: 44 4c 45 2c 20 57 4f 52 44 29 3b 0d 0a 42 4f 4f DLE, WORD);..BOO 1970: 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c L SetConsoleTitl 1980: 65 41 28 4c 50 43 53 54 52 29 3b 0d 0a 42 4f 4f eA(LPCSTR);..BOO 1990: 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c L SetConsoleTitl 19a0: 65 57 28 4c 50 43 57 53 54 52 29 3b 0d 0a 42 4f eW(LPCWSTR);..BO 19b0: 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 57 69 6e OL SetConsoleWin 19c0: 64 6f 77 49 6e 66 6f 28 48 41 4e 44 4c 45 2c 20 dowInfo(HANDLE, 19d0: 42 4f 4f 4c 2c 20 63 6f 6e 73 74 28 53 4d 41 4c BOOL, const(SMAL 19e0: 4c 5f 52 45 43 54 29 2a 29 3b 0d 0a 42 4f 4f 4c L_RECT)*);..BOOL 19f0: 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 41 28 48 WriteConsoleA(H 1a00: 41 4e 44 4c 45 2c 20 50 43 56 4f 49 44 2c 20 44 ANDLE, PCVOID, D 1a10: 57 4f 52 44 2c 20 50 44 57 4f 52 44 2c 20 50 56 WORD, PDWORD, PV 1a20: 4f 49 44 29 3b 0d 0a 42 4f 4f 4c 20 57 72 69 74 OID);..BOOL Writ 1a30: 65 43 6f 6e 73 6f 6c 65 57 28 48 41 4e 44 4c 45 eConsoleW(HANDLE 1a40: 2c 20 50 43 56 4f 49 44 2c 20 44 57 4f 52 44 2c , PCVOID, DWORD, 1a50: 20 50 44 57 4f 52 44 2c 20 50 56 4f 49 44 29 3b PDWORD, PVOID); 1a60: 0d 0a 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 ..BOOL WriteCons 1a70: 6f 6c 65 49 6e 70 75 74 41 28 48 41 4e 44 4c 45 oleInputA(HANDLE 1a80: 2c 20 63 6f 6e 73 74 28 49 4e 50 55 54 5f 52 45 , const(INPUT_RE 1a90: 43 4f 52 44 29 2a 2c 20 44 57 4f 52 44 2c 20 50 CORD)*, DWORD, P 1aa0: 44 57 4f 52 44 29 3b 0d 0a 42 4f 4f 4c 20 57 72 DWORD);..BOOL Wr 1ab0: 69 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 iteConsoleInputW 1ac0: 28 48 41 4e 44 4c 45 2c 20 63 6f 6e 73 74 28 49 (HANDLE, const(I 1ad0: 4e 50 55 54 5f 52 45 43 4f 52 44 29 2a 2c 20 44 NPUT_RECORD)*, D 1ae0: 57 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d 0a WORD, PDWORD);.. 1af0: 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f 6c BOOL WriteConsol 1b00: 65 4f 75 74 70 75 74 41 28 48 41 4e 44 4c 45 2c eOutputA(HANDLE, 1b10: 20 63 6f 6e 73 74 28 43 48 41 52 5f 49 4e 46 4f const(CHAR_INFO 1b20: 29 2a 2c 20 43 4f 4f 52 44 2c 20 43 4f 4f 52 44 )*, COORD, COORD 1b30: 2c 20 50 53 4d 41 4c 4c 5f 52 45 43 54 29 3b 0d , PSMALL_RECT);. 1b40: 0a 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f .BOOL WriteConso 1b50: 6c 65 4f 75 74 70 75 74 57 28 48 41 4e 44 4c 45 leOutputW(HANDLE 1b60: 2c 20 63 6f 6e 73 74 28 43 48 41 52 5f 49 4e 46 , const(CHAR_INF 1b70: 4f 29 2a 2c 20 43 4f 4f 52 44 2c 20 43 4f 4f 52 O)*, COORD, COOR 1b80: 44 2c 20 50 53 4d 41 4c 4c 5f 52 45 43 54 29 3b D, PSMALL_RECT); 1b90: 0d 0a 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 ..BOOL WriteCons 1ba0: 6f 6c 65 4f 75 74 70 75 74 41 74 74 72 69 62 75 oleOutputAttribu 1bb0: 74 65 28 48 41 4e 44 4c 45 2c 20 63 6f 6e 73 74 te(HANDLE, const 1bc0: 28 57 4f 52 44 29 2a 2c 20 44 57 4f 52 44 2c 20 (WORD)*, DWORD, 1bd0: 43 4f 4f 52 44 2c 20 50 44 57 4f 52 44 29 3b 0d COORD, PDWORD);. 1be0: 0a 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f .BOOL WriteConso 1bf0: 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 leOutputCharacte 1c00: 72 41 28 48 41 4e 44 4c 45 2c 20 4c 50 43 53 54 rA(HANDLE, LPCST 1c10: 52 2c 20 44 57 4f 52 44 2c 20 43 4f 4f 52 44 2c R, DWORD, COORD, 1c20: 20 50 44 57 4f 52 44 29 3b 0d 0a 42 4f 4f 4c 20 PDWORD);..BOOL 1c30: 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 WriteConsoleOutp 1c40: 75 74 43 68 61 72 61 63 74 65 72 57 28 48 41 4e utCharacterW(HAN 1c50: 44 4c 45 2c 20 4c 50 43 57 53 54 52 2c 20 44 57 DLE, LPCWSTR, DW 1c60: 4f 52 44 2c 20 43 4f 4f 52 44 2c 20 50 44 57 4f ORD, COORD, PDWO 1c70: 52 44 29 3b 0d 0a 0d 0a 76 65 72 73 69 6f 6e 20 RD);....version 1c80: 28 55 6e 69 63 6f 64 65 29 20 7b 0d 0a 09 61 6c (Unicode) {...al 1c90: 69 61 73 20 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f ias FillConsoleO 1ca0: 75 74 70 75 74 43 68 61 72 61 63 74 65 72 57 20 utputCharacterW 1cb0: 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 FillConsoleOutpu 1cc0: 74 43 68 61 72 61 63 74 65 72 3b 0d 0a 09 61 6c tCharacter;...al 1cd0: 69 61 73 20 47 65 74 43 6f 6e 73 6f 6c 65 54 69 ias GetConsoleTi 1ce0: 74 6c 65 57 20 47 65 74 43 6f 6e 73 6f 6c 65 54 tleW GetConsoleT 1cf0: 69 74 6c 65 3b 0d 0a 09 61 6c 69 61 73 20 50 65 itle;...alias Pe 1d00: 65 6b 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 20 ekConsoleInputW 1d10: 50 65 65 6b 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 PeekConsoleInput 1d20: 3b 0d 0a 09 61 6c 69 61 73 20 52 65 61 64 43 6f ;...alias ReadCo 1d30: 6e 73 6f 6c 65 57 20 52 65 61 64 43 6f 6e 73 6f nsoleW ReadConso 1d40: 6c 65 3b 0d 0a 09 61 6c 69 61 73 20 52 65 61 64 le;...alias Read 1d50: 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 20 52 65 ConsoleInputW Re 1d60: 61 64 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 3b 0d adConsoleInput;. 1d70: 0a 09 61 6c 69 61 73 20 52 65 61 64 43 6f 6e 73 ..alias ReadCons 1d80: 6f 6c 65 4f 75 74 70 75 74 57 20 52 65 61 64 43 oleOutputW ReadC 1d90: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 3b 0d 0a 09 onsoleOutput;... 1da0: 61 6c 69 61 73 20 52 65 61 64 43 6f 6e 73 6f 6c alias ReadConsol 1db0: 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 72 eOutputCharacter 1dc0: 57 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 W ReadConsoleOut 1dd0: 70 75 74 43 68 61 72 61 63 74 65 72 3b 0d 0a 09 putCharacter;... 1de0: 61 6c 69 61 73 20 53 63 72 6f 6c 6c 43 6f 6e 73 alias ScrollCons 1df0: 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 65 72 57 oleScreenBufferW 1e00: 20 53 63 72 6f 6c 6c 43 6f 6e 73 6f 6c 65 53 63 ScrollConsoleSc 1e10: 72 65 65 6e 42 75 66 66 65 72 3b 0d 0a 09 61 6c reenBuffer;...al 1e20: 69 61 73 20 53 65 74 43 6f 6e 73 6f 6c 65 54 69 ias SetConsoleTi 1e30: 74 6c 65 57 20 53 65 74 43 6f 6e 73 6f 6c 65 54 tleW SetConsoleT 1e40: 69 74 6c 65 3b 0d 0a 09 61 6c 69 61 73 20 57 72 itle;...alias Wr 1e50: 69 74 65 43 6f 6e 73 6f 6c 65 57 20 57 72 69 74 iteConsoleW Writ 1e60: 65 43 6f 6e 73 6f 6c 65 3b 0d 0a 09 61 6c 69 61 eConsole;...alia 1e70: 73 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 49 6e s WriteConsoleIn 1e80: 70 75 74 57 20 57 72 69 74 65 43 6f 6e 73 6f 6c putW WriteConsol 1e90: 65 49 6e 70 75 74 3b 0d 0a 09 61 6c 69 61 73 20 eInput;...alias 1ea0: 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 WriteConsoleOutp 1eb0: 75 74 57 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 utW WriteConsole 1ec0: 4f 75 74 70 75 74 3b 0d 0a 09 61 6c 69 61 73 20 Output;...alias 1ed0: 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 WriteConsoleOutp 1ee0: 75 74 43 68 61 72 61 63 74 65 72 57 20 57 72 69 utCharacterW Wri 1ef0: 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 teConsoleOutputC 1f00: 68 61 72 61 63 74 65 72 3b 0d 0a 7d 20 65 6c 73 haracter;..} els 1f10: 65 20 7b 0d 0a 09 61 6c 69 61 73 20 46 69 6c 6c e {...alias Fill 1f20: 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 ConsoleOutputCha 1f30: 72 61 63 74 65 72 41 20 46 69 6c 6c 43 6f 6e 73 racterA FillCons 1f40: 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 oleOutputCharact 1f50: 65 72 3b 0d 0a 09 61 6c 69 61 73 20 47 65 74 43 er;...alias GetC 1f60: 6f 6e 73 6f 6c 65 54 69 74 6c 65 41 20 47 65 74 onsoleTitleA Get 1f70: 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 3b 0d 0a 09 ConsoleTitle;... 1f80: 61 6c 69 61 73 20 50 65 65 6b 43 6f 6e 73 6f 6c alias PeekConsol 1f90: 65 49 6e 70 75 74 41 20 50 65 65 6b 43 6f 6e 73 eInputA PeekCons 1fa0: 6f 6c 65 49 6e 70 75 74 3b 0d 0a 09 61 6c 69 61 oleInput;...alia 1fb0: 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 41 20 52 s ReadConsoleA R 1fc0: 65 61 64 43 6f 6e 73 6f 6c 65 3b 0d 0a 09 61 6c eadConsole;...al 1fd0: 69 61 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 49 ias ReadConsoleI 1fe0: 6e 70 75 74 41 20 52 65 61 64 43 6f 6e 73 6f 6c nputA ReadConsol 1ff0: 65 49 6e 70 75 74 3b 0d 0a 09 61 6c 69 61 73 20 eInput;...alias 2000: 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 ReadConsoleOutpu 2010: 74 41 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 tA ReadConsoleOu 2020: 74 70 75 74 3b 0d 0a 09 61 6c 69 61 73 20 52 65 tput;...alias Re 2030: 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 adConsoleOutputC 2040: 68 61 72 61 63 74 65 72 41 20 52 65 61 64 43 6f haracterA ReadCo 2050: 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 nsoleOutputChara 2060: 63 74 65 72 3b 0d 0a 09 61 6c 69 61 73 20 53 63 cter;...alias Sc 2070: 72 6f 6c 6c 43 6f 6e 73 6f 6c 65 53 63 72 65 65 rollConsoleScree 2080: 6e 42 75 66 66 65 72 41 20 53 63 72 6f 6c 6c 43 nBufferA ScrollC 2090: 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 onsoleScreenBuff 20a0: 65 72 3b 0d 0a 09 61 6c 69 61 73 20 53 65 74 43 er;...alias SetC 20b0: 6f 6e 73 6f 6c 65 54 69 74 6c 65 41 20 53 65 74 onsoleTitleA Set 20c0: 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 3b 0d 0a 09 ConsoleTitle;... 20d0: 61 6c 69 61 73 20 57 72 69 74 65 43 6f 6e 73 6f alias WriteConso 20e0: 6c 65 41 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 leA WriteConsole 20f0: 3b 0d 0a 09 61 6c 69 61 73 20 57 72 69 74 65 43 ;...alias WriteC 2100: 6f 6e 73 6f 6c 65 49 6e 70 75 74 41 20 57 72 69 onsoleInputA Wri 2110: 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 3b 0d teConsoleInput;. 2120: 0a 09 61 6c 69 61 73 20 57 72 69 74 65 43 6f 6e ..alias WriteCon 2130: 73 6f 6c 65 4f 75 74 70 75 74 41 20 57 72 69 74 soleOutputA Writ 2140: 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 3b 0d eConsoleOutput;. 2150: 0a 09 61 6c 69 61 73 20 57 72 69 74 65 43 6f 6e ..alias WriteCon 2160: 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 soleOutputCharac 2170: 74 65 72 41 20 57 72 69 74 65 43 6f 6e 73 6f 6c terA WriteConsol 2180: 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 72 eOutputCharacter 2190: 3b 0d 0a 7d 0d 0a ;..}..