0000: 6d 6f 64 75 6c 65 20 77 69 6e 33 32 2e 61 6e 73 module win32.ans
0010: 69 2e 77 69 6e 63 6f 6e 3b 0d 0a 0d 0a 2f 2f 20 i.wincon;....//
0020: 54 72 61 6e 73 6c 61 74 65 64 20 66 72 6f 6d 20 Translated from
0030: 4d 69 63 72 6f 73 6f 66 74 20 50 6c 61 74 66 6f Microsoft Platfo
0040: 72 6d 20 53 44 4b 20 41 75 67 75 73 74 20 32 30 rm SDK August 20
0050: 30 31 20 45 64 69 74 69 6f 6e 0d 0a 2f 2f 20 62 01 Edition..// b
0060: 79 20 59 2e 54 6f 6d 69 6e 6f 20 28 64 65 6d 6f y Y.Tomino (demo
0070: 6f 6e 6c 69 74 40 69 6e 74 65 72 37 2e 6a 70 29 onlit@inter7.jp)
0080: 0d 0a 0d 0a 69 6d 70 6f 72 74 20 77 69 6e 33 32 ....import win32
0090: 2e 61 6e 73 69 2e 77 69 6e 62 61 73 65 3b 0d 0a .ansi.winbase;..
00a0: 0d 0a 2f 2f 20 23 69 66 6e 64 65 66 20 5f 57 49 ..// #ifndef _WI
00b0: 4e 43 4f 4e 5f 0d 0a 2f 2f 20 23 64 65 66 69 6e NCON_..// #defin
00c0: 65 20 5f 57 49 4e 43 4f 4e 5f 0d 0a 0d 0a 2f 2f e _WINCON_....//
00d0: 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 70 #ifdef __cplusp
00e0: 6c 75 73 0d 0a 2f 2f 20 65 78 74 65 72 6e 20 22 lus..// extern "
00f0: 43 22 20 7b 0d 0a 2f 2f 20 23 65 6e 64 69 66 0d C" {..// #endif.
0100: 0a 0d 0a 73 74 72 75 63 74 20 5f 43 4f 4f 52 44 ...struct _COORD
0110: 20 7b 0d 0a 20 20 53 48 4f 52 54 20 58 3b 0d 0a {.. SHORT X;..
0120: 20 20 53 48 4f 52 54 20 59 3b 0d 0a 7d 0d 0a 61 SHORT Y;..}..a
0130: 6c 69 61 73 20 5f 43 4f 4f 52 44 20 43 4f 4f 52 lias _COORD COOR
0140: 44 3b 0d 0a 61 6c 69 61 73 20 5f 43 4f 4f 52 44 D;..alias _COORD
0150: 2a 20 50 43 4f 4f 52 44 3b 0d 0a 0d 0a 73 74 72 * PCOORD;....str
0160: 75 63 74 20 5f 53 4d 41 4c 4c 5f 52 45 43 54 20 uct _SMALL_RECT
0170: 7b 0d 0a 20 20 53 48 4f 52 54 20 4c 65 66 74 3b {.. SHORT Left;
0180: 0d 0a 20 20 53 48 4f 52 54 20 54 6f 70 3b 0d 0a .. SHORT Top;..
0190: 20 20 53 48 4f 52 54 20 52 69 67 68 74 3b 0d 0a SHORT Right;..
01a0: 20 20 53 48 4f 52 54 20 42 6f 74 74 6f 6d 3b 0d SHORT Bottom;.
01b0: 0a 7d 0d 0a 61 6c 69 61 73 20 5f 53 4d 41 4c 4c .}..alias _SMALL
01c0: 5f 52 45 43 54 20 53 4d 41 4c 4c 5f 52 45 43 54 _RECT SMALL_RECT
01d0: 3b 0d 0a 61 6c 69 61 73 20 5f 53 4d 41 4c 4c 5f ;..alias _SMALL_
01e0: 52 45 43 54 2a 20 50 53 4d 41 4c 4c 5f 52 45 43 RECT* PSMALL_REC
01f0: 54 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 4b 45 T;....struct _KE
0200: 59 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 7b Y_EVENT_RECORD {
0210: 0d 0a 20 20 42 4f 4f 4c 20 62 4b 65 79 44 6f 77 .. BOOL bKeyDow
0220: 6e 3b 0d 0a 20 20 57 4f 52 44 20 77 52 65 70 65 n;.. WORD wRepe
0230: 61 74 43 6f 75 6e 74 3b 0d 0a 20 20 57 4f 52 44 atCount;.. WORD
0240: 20 77 56 69 72 74 75 61 6c 4b 65 79 43 6f 64 65 wVirtualKeyCode
0250: 3b 0d 0a 20 20 57 4f 52 44 20 77 56 69 72 74 75 ;.. WORD wVirtu
0260: 61 6c 53 63 61 6e 43 6f 64 65 3b 0d 0a 75 6e 69 alScanCode;..uni
0270: 6f 6e 20 7b 0d 0a 20 20 57 43 48 41 52 20 55 6e on {.. WCHAR Un
0280: 69 63 6f 64 65 43 68 61 72 3b 0d 0a 20 20 43 48 icodeChar;.. CH
0290: 41 52 20 41 73 63 69 69 43 68 61 72 3b 0d 0a 7d AR AsciiChar;..}
02a0: 0d 0a 0d 0a 20 20 44 57 4f 52 44 20 64 77 43 6f .... DWORD dwCo
02b0: 6e 74 72 6f 6c 4b 65 79 53 74 61 74 65 3b 0d 0a ntrolKeyState;..
02c0: 7d 0d 0a 61 6c 69 61 73 20 5f 4b 45 59 5f 45 56 }..alias _KEY_EV
02d0: 45 4e 54 5f 52 45 43 4f 52 44 20 4b 45 59 5f 45 ENT_RECORD KEY_E
02e0: 56 45 4e 54 5f 52 45 43 4f 52 44 3b 0d 0a 61 6c VENT_RECORD;..al
02f0: 69 61 73 20 5f 4b 45 59 5f 45 56 45 4e 54 5f 52 ias _KEY_EVENT_R
0300: 45 43 4f 52 44 2a 20 50 4b 45 59 5f 45 56 45 4e ECORD* PKEY_EVEN
0310: 54 5f 52 45 43 4f 52 44 3b 0d 0a 0d 0a 65 6e 75 T_RECORD;....enu
0320: 6d 20 3a 20 75 69 6e 74 20 7b 20 52 49 47 48 54 m : uint { RIGHT
0330: 5f 41 4c 54 5f 50 52 45 53 53 45 44 20 3d 20 30 _ALT_PRESSED = 0
0340: 78 30 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 x0001 }..enum :
0350: 75 69 6e 74 20 7b 20 4c 45 46 54 5f 41 4c 54 5f uint { LEFT_ALT_
0360: 50 52 45 53 53 45 44 20 3d 20 30 78 30 30 30 32 PRESSED = 0x0002
0370: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0380: 7b 20 52 49 47 48 54 5f 43 54 52 4c 5f 50 52 45 { RIGHT_CTRL_PRE
0390: 53 53 45 44 20 3d 20 30 78 30 30 30 34 20 7d 0d SSED = 0x0004 }.
03a0: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4c .enum : uint { L
03b0: 45 46 54 5f 43 54 52 4c 5f 50 52 45 53 53 45 44 EFT_CTRL_PRESSED
03c0: 20 3d 20 30 78 30 30 30 38 20 7d 0d 0a 65 6e 75 = 0x0008 }..enu
03d0: 6d 20 3a 20 75 69 6e 74 20 7b 20 53 48 49 46 54 m : uint { SHIFT
03e0: 5f 50 52 45 53 53 45 44 20 3d 20 30 78 30 30 31 _PRESSED = 0x001
03f0: 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 0 }..enum : uint
0400: 20 7b 20 4e 55 4d 4c 4f 43 4b 5f 4f 4e 20 3d 20 { NUMLOCK_ON =
0410: 30 78 30 30 32 30 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0020 }..enum :
0420: 20 75 69 6e 74 20 7b 20 53 43 52 4f 4c 4c 4c 4f uint { SCROLLLO
0430: 43 4b 5f 4f 4e 20 3d 20 30 78 30 30 34 30 20 7d CK_ON = 0x0040 }
0440: 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 ..enum : uint {
0450: 43 41 50 53 4c 4f 43 4b 5f 4f 4e 20 3d 20 30 78 CAPSLOCK_ON = 0x
0460: 30 30 38 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 0080 }..enum : u
0470: 69 6e 74 20 7b 20 45 4e 48 41 4e 43 45 44 5f 4b int { ENHANCED_K
0480: 45 59 20 3d 20 30 78 30 31 30 30 20 7d 0d 0a 65 EY = 0x0100 }..e
0490: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4e 4c 53 num : uint { NLS
04a0: 5f 44 42 43 53 43 48 41 52 20 3d 20 30 78 30 30 _DBCSCHAR = 0x00
04b0: 30 31 30 30 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 010000 }..enum :
04c0: 20 75 69 6e 74 20 7b 20 4e 4c 53 5f 41 4c 50 48 uint { NLS_ALPH
04d0: 41 4e 55 4d 45 52 49 43 20 3d 20 30 78 30 30 30 ANUMERIC = 0x000
04e0: 30 30 30 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 00000 }..enum :
04f0: 75 69 6e 74 20 7b 20 4e 4c 53 5f 4b 41 54 41 4b uint { NLS_KATAK
0500: 41 4e 41 20 3d 20 30 78 30 30 30 32 30 30 30 30 ANA = 0x00020000
0510: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0520: 7b 20 4e 4c 53 5f 48 49 52 41 47 41 4e 41 20 3d { NLS_HIRAGANA =
0530: 20 30 78 30 30 30 34 30 30 30 30 20 7d 0d 0a 65 0x00040000 }..e
0540: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4e 4c 53 num : uint { NLS
0550: 5f 52 4f 4d 41 4e 20 3d 20 30 78 30 30 34 30 30 _ROMAN = 0x00400
0560: 30 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 000 }..enum : ui
0570: 6e 74 20 7b 20 4e 4c 53 5f 49 4d 45 5f 43 4f 4e nt { NLS_IME_CON
0580: 56 45 52 53 49 4f 4e 20 3d 20 30 78 30 30 38 30 VERSION = 0x0080
0590: 30 30 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 0000 }..enum : u
05a0: 69 6e 74 20 7b 20 4e 4c 53 5f 49 4d 45 5f 44 49 int { NLS_IME_DI
05b0: 53 41 42 4c 45 20 3d 20 30 78 32 30 30 30 30 30 SABLE = 0x200000
05c0: 30 30 20 7d 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 00 }....struct _
05d0: 4d 4f 55 53 45 5f 45 56 45 4e 54 5f 52 45 43 4f MOUSE_EVENT_RECO
05e0: 52 44 20 7b 0d 0a 20 20 43 4f 4f 52 44 20 64 77 RD {.. COORD dw
05f0: 4d 6f 75 73 65 50 6f 73 69 74 69 6f 6e 3b 0d 0a MousePosition;..
0600: 20 20 44 57 4f 52 44 20 64 77 42 75 74 74 6f 6e DWORD dwButton
0610: 53 74 61 74 65 3b 0d 0a 20 20 44 57 4f 52 44 20 State;.. DWORD
0620: 64 77 43 6f 6e 74 72 6f 6c 4b 65 79 53 74 61 74 dwControlKeyStat
0630: 65 3b 0d 0a 20 20 44 57 4f 52 44 20 64 77 45 76 e;.. DWORD dwEv
0640: 65 6e 74 46 6c 61 67 73 3b 0d 0a 7d 0d 0a 61 6c entFlags;..}..al
0650: 69 61 73 20 5f 4d 4f 55 53 45 5f 45 56 45 4e 54 ias _MOUSE_EVENT
0660: 5f 52 45 43 4f 52 44 20 4d 4f 55 53 45 5f 45 56 _RECORD MOUSE_EV
0670: 45 4e 54 5f 52 45 43 4f 52 44 3b 0d 0a 61 6c 69 ENT_RECORD;..ali
0680: 61 73 20 5f 4d 4f 55 53 45 5f 45 56 45 4e 54 5f as _MOUSE_EVENT_
0690: 52 45 43 4f 52 44 2a 20 50 4d 4f 55 53 45 5f 45 RECORD* PMOUSE_E
06a0: 56 45 4e 54 5f 52 45 43 4f 52 44 3b 0d 0a 0d 0a VENT_RECORD;....
06b0: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 46 52 enum : uint { FR
06c0: 4f 4d 5f 4c 45 46 54 5f 31 53 54 5f 42 55 54 54 OM_LEFT_1ST_BUTT
06d0: 4f 4e 5f 50 52 45 53 53 45 44 20 3d 20 30 78 30 ON_PRESSED = 0x0
06e0: 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 001 }..enum : ui
06f0: 6e 74 20 7b 20 52 49 47 48 54 4d 4f 53 54 5f 42 nt { RIGHTMOST_B
0700: 55 54 54 4f 4e 5f 50 52 45 53 53 45 44 20 3d 20 UTTON_PRESSED =
0710: 30 78 30 30 30 32 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0002 }..enum :
0720: 20 75 69 6e 74 20 7b 20 46 52 4f 4d 5f 4c 45 46 uint { FROM_LEF
0730: 54 5f 32 4e 44 5f 42 55 54 54 4f 4e 5f 50 52 45 T_2ND_BUTTON_PRE
0740: 53 53 45 44 20 3d 20 30 78 30 30 30 34 20 7d 0d SSED = 0x0004 }.
0750: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 46 .enum : uint { F
0760: 52 4f 4d 5f 4c 45 46 54 5f 33 52 44 5f 42 55 54 ROM_LEFT_3RD_BUT
0770: 54 4f 4e 5f 50 52 45 53 53 45 44 20 3d 20 30 78 TON_PRESSED = 0x
0780: 30 30 30 38 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 0008 }..enum : u
0790: 69 6e 74 20 7b 20 46 52 4f 4d 5f 4c 45 46 54 5f int { FROM_LEFT_
07a0: 34 54 48 5f 42 55 54 54 4f 4e 5f 50 52 45 53 53 4TH_BUTTON_PRESS
07b0: 45 44 20 3d 20 30 78 30 30 31 30 20 7d 0d 0a 0d ED = 0x0010 }...
07c0: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4d .enum : uint { M
07d0: 4f 55 53 45 5f 4d 4f 56 45 44 20 3d 20 30 78 30 OUSE_MOVED = 0x0
07e0: 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 001 }..enum : ui
07f0: 6e 74 20 7b 20 44 4f 55 42 4c 45 5f 43 4c 49 43 nt { DOUBLE_CLIC
0800: 4b 20 3d 20 30 78 30 30 30 32 20 7d 0d 0a 65 6e K = 0x0002 }..en
0810: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4d 4f 55 53 um : uint { MOUS
0820: 45 5f 57 48 45 45 4c 45 44 20 3d 20 30 78 30 30 E_WHEELED = 0x00
0830: 30 34 20 7d 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 04 }....struct _
0840: 57 49 4e 44 4f 57 5f 42 55 46 46 45 52 5f 53 49 WINDOW_BUFFER_SI
0850: 5a 45 5f 52 45 43 4f 52 44 20 7b 0d 0a 20 20 43 ZE_RECORD {.. C
0860: 4f 4f 52 44 20 64 77 53 69 7a 65 3b 0d 0a 7d 0d OORD dwSize;..}.
0870: 0a 61 6c 69 61 73 20 5f 57 49 4e 44 4f 57 5f 42 .alias _WINDOW_B
0880: 55 46 46 45 52 5f 53 49 5a 45 5f 52 45 43 4f 52 UFFER_SIZE_RECOR
0890: 44 20 57 49 4e 44 4f 57 5f 42 55 46 46 45 52 5f D WINDOW_BUFFER_
08a0: 53 49 5a 45 5f 52 45 43 4f 52 44 3b 0d 0a 61 6c SIZE_RECORD;..al
08b0: 69 61 73 20 5f 57 49 4e 44 4f 57 5f 42 55 46 46 ias _WINDOW_BUFF
08c0: 45 52 5f 53 49 5a 45 5f 52 45 43 4f 52 44 2a 20 ER_SIZE_RECORD*
08d0: 50 57 49 4e 44 4f 57 5f 42 55 46 46 45 52 5f 53 PWINDOW_BUFFER_S
08e0: 49 5a 45 5f 52 45 43 4f 52 44 3b 0d 0a 0d 0a 73 IZE_RECORD;....s
08f0: 74 72 75 63 74 20 5f 4d 45 4e 55 5f 45 56 45 4e truct _MENU_EVEN
0900: 54 5f 52 45 43 4f 52 44 20 7b 0d 0a 20 20 55 49 T_RECORD {.. UI
0910: 4e 54 20 64 77 43 6f 6d 6d 61 6e 64 49 64 3b 0d NT dwCommandId;.
0920: 0a 7d 0d 0a 61 6c 69 61 73 20 5f 4d 45 4e 55 5f .}..alias _MENU_
0930: 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 4d 45 4e EVENT_RECORD MEN
0940: 55 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 3b 0d U_EVENT_RECORD;.
0950: 0a 61 6c 69 61 73 20 5f 4d 45 4e 55 5f 45 56 45 .alias _MENU_EVE
0960: 4e 54 5f 52 45 43 4f 52 44 2a 20 50 4d 45 4e 55 NT_RECORD* PMENU
0970: 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 3b 0d 0a _EVENT_RECORD;..
0980: 0d 0a 73 74 72 75 63 74 20 5f 46 4f 43 55 53 5f ..struct _FOCUS_
0990: 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 7b 0d 0a EVENT_RECORD {..
09a0: 20 20 42 4f 4f 4c 20 62 53 65 74 46 6f 63 75 73 BOOL bSetFocus
09b0: 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 46 4f 43 ;..}..alias _FOC
09c0: 55 53 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 US_EVENT_RECORD
09d0: 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 45 43 4f FOCUS_EVENT_RECO
09e0: 52 44 3b 0d 0a 61 6c 69 61 73 20 5f 46 4f 43 55 RD;..alias _FOCU
09f0: 53 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 2a 20 S_EVENT_RECORD*
0a00: 50 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 45 43 PFOCUS_EVENT_REC
0a10: 4f 52 44 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f ORD;....struct _
0a20: 49 4e 50 55 54 5f 52 45 43 4f 52 44 20 7b 0d 0a INPUT_RECORD {..
0a30: 20 20 57 4f 52 44 20 45 76 65 6e 74 54 79 70 65 WORD EventType
0a40: 3b 0d 0a 75 6e 69 6f 6e 20 7b 0d 0a 20 20 4b 45 ;..union {.. KE
0a50: 59 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 4b Y_EVENT_RECORD K
0a60: 65 79 45 76 65 6e 74 3b 0d 0a 20 20 4d 4f 55 53 eyEvent;.. MOUS
0a70: 45 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 4d E_EVENT_RECORD M
0a80: 6f 75 73 65 45 76 65 6e 74 3b 0d 0a 20 20 57 49 ouseEvent;.. WI
0a90: 4e 44 4f 57 5f 42 55 46 46 45 52 5f 53 49 5a 45 NDOW_BUFFER_SIZE
0aa0: 5f 52 45 43 4f 52 44 20 57 69 6e 64 6f 77 42 75 _RECORD WindowBu
0ab0: 66 66 65 72 53 69 7a 65 45 76 65 6e 74 3b 0d 0a fferSizeEvent;..
0ac0: 20 20 4d 45 4e 55 5f 45 56 45 4e 54 5f 52 45 43 MENU_EVENT_REC
0ad0: 4f 52 44 20 4d 65 6e 75 45 76 65 6e 74 3b 0d 0a ORD MenuEvent;..
0ae0: 20 20 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 45 FOCUS_EVENT_RE
0af0: 43 4f 52 44 20 46 6f 63 75 73 45 76 65 6e 74 3b CORD FocusEvent;
0b00: 0d 0a 7d 0d 0a 0d 0a 7d 0d 0a 61 6c 69 61 73 20 ..}....}..alias
0b10: 5f 49 4e 50 55 54 5f 52 45 43 4f 52 44 20 49 4e _INPUT_RECORD IN
0b20: 50 55 54 5f 52 45 43 4f 52 44 3b 0d 0a 61 6c 69 PUT_RECORD;..ali
0b30: 61 73 20 5f 49 4e 50 55 54 5f 52 45 43 4f 52 44 as _INPUT_RECORD
0b40: 2a 20 50 49 4e 50 55 54 5f 52 45 43 4f 52 44 3b * PINPUT_RECORD;
0b50: 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 ....enum : uint
0b60: 7b 20 4b 45 59 5f 45 56 45 4e 54 20 3d 20 30 78 { KEY_EVENT = 0x
0b70: 30 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 0001 }..enum : u
0b80: 69 6e 74 20 7b 20 4d 4f 55 53 45 5f 45 56 45 4e int { MOUSE_EVEN
0b90: 54 20 3d 20 30 78 30 30 30 32 20 7d 0d 0a 65 6e T = 0x0002 }..en
0ba0: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 57 49 4e 44 um : uint { WIND
0bb0: 4f 57 5f 42 55 46 46 45 52 5f 53 49 5a 45 5f 45 OW_BUFFER_SIZE_E
0bc0: 56 45 4e 54 20 3d 20 30 78 30 30 30 34 20 7d 0d VENT = 0x0004 }.
0bd0: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4d .enum : uint { M
0be0: 45 4e 55 5f 45 56 45 4e 54 20 3d 20 30 78 30 30 ENU_EVENT = 0x00
0bf0: 30 38 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 08 }..enum : uin
0c00: 74 20 7b 20 46 4f 43 55 53 5f 45 56 45 4e 54 20 t { FOCUS_EVENT
0c10: 3d 20 30 78 30 30 31 30 20 7d 0d 0a 0d 0a 73 74 = 0x0010 }....st
0c20: 72 75 63 74 20 5f 43 48 41 52 5f 49 4e 46 4f 20 ruct _CHAR_INFO
0c30: 7b 0d 0a 75 6e 69 6f 6e 20 7b 0d 0a 20 20 57 43 {..union {.. WC
0c40: 48 41 52 20 55 6e 69 63 6f 64 65 43 68 61 72 3b HAR UnicodeChar;
0c50: 0d 0a 20 20 43 48 41 52 20 41 73 63 69 69 43 68 .. CHAR AsciiCh
0c60: 61 72 3b 0d 0a 7d 0d 0a 0d 0a 20 20 57 4f 52 44 ar;..}.... WORD
0c70: 20 41 74 74 72 69 62 75 74 65 73 3b 0d 0a 7d 0d Attributes;..}.
0c80: 0a 61 6c 69 61 73 20 5f 43 48 41 52 5f 49 4e 46 .alias _CHAR_INF
0c90: 4f 20 43 48 41 52 5f 49 4e 46 4f 3b 0d 0a 61 6c O CHAR_INFO;..al
0ca0: 69 61 73 20 5f 43 48 41 52 5f 49 4e 46 4f 2a 20 ias _CHAR_INFO*
0cb0: 50 43 48 41 52 5f 49 4e 46 4f 3b 0d 0a 0d 0a 65 PCHAR_INFO;....e
0cc0: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 46 4f 52 num : uint { FOR
0cd0: 45 47 52 4f 55 4e 44 5f 42 4c 55 45 20 3d 20 30 EGROUND_BLUE = 0
0ce0: 78 30 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 x0001 }..enum :
0cf0: 75 69 6e 74 20 7b 20 46 4f 52 45 47 52 4f 55 4e uint { FOREGROUN
0d00: 44 5f 47 52 45 45 4e 20 3d 20 30 78 30 30 30 32 D_GREEN = 0x0002
0d10: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0d20: 7b 20 46 4f 52 45 47 52 4f 55 4e 44 5f 52 45 44 { FOREGROUND_RED
0d30: 20 3d 20 30 78 30 30 30 34 20 7d 0d 0a 65 6e 75 = 0x0004 }..enu
0d40: 6d 20 3a 20 75 69 6e 74 20 7b 20 46 4f 52 45 47 m : uint { FOREG
0d50: 52 4f 55 4e 44 5f 49 4e 54 45 4e 53 49 54 59 20 ROUND_INTENSITY
0d60: 3d 20 30 78 30 30 30 38 20 7d 0d 0a 65 6e 75 6d = 0x0008 }..enum
0d70: 20 3a 20 75 69 6e 74 20 7b 20 42 41 43 4b 47 52 : uint { BACKGR
0d80: 4f 55 4e 44 5f 42 4c 55 45 20 3d 20 30 78 30 30 OUND_BLUE = 0x00
0d90: 31 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 10 }..enum : uin
0da0: 74 20 7b 20 42 41 43 4b 47 52 4f 55 4e 44 5f 47 t { BACKGROUND_G
0db0: 52 45 45 4e 20 3d 20 30 78 30 30 32 30 20 7d 0d REEN = 0x0020 }.
0dc0: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 42 .enum : uint { B
0dd0: 41 43 4b 47 52 4f 55 4e 44 5f 52 45 44 20 3d 20 ACKGROUND_RED =
0de0: 30 78 30 30 34 30 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0040 }..enum :
0df0: 20 75 69 6e 74 20 7b 20 42 41 43 4b 47 52 4f 55 uint { BACKGROU
0e00: 4e 44 5f 49 4e 54 45 4e 53 49 54 59 20 3d 20 30 ND_INTENSITY = 0
0e10: 78 30 30 38 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 x0080 }..enum :
0e20: 75 69 6e 74 20 7b 20 43 4f 4d 4d 4f 4e 5f 4c 56 uint { COMMON_LV
0e30: 42 5f 4c 45 41 44 49 4e 47 5f 42 59 54 45 20 3d B_LEADING_BYTE =
0e40: 20 30 78 30 31 30 30 20 7d 0d 0a 65 6e 75 6d 20 0x0100 }..enum
0e50: 3a 20 75 69 6e 74 20 7b 20 43 4f 4d 4d 4f 4e 5f : uint { COMMON_
0e60: 4c 56 42 5f 54 52 41 49 4c 49 4e 47 5f 42 59 54 LVB_TRAILING_BYT
0e70: 45 20 3d 20 30 78 30 32 30 30 20 7d 0d 0a 65 6e E = 0x0200 }..en
0e80: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4d 4d um : uint { COMM
0e90: 4f 4e 5f 4c 56 42 5f 47 52 49 44 5f 48 4f 52 49 ON_LVB_GRID_HORI
0ea0: 5a 4f 4e 54 41 4c 20 3d 20 30 78 30 34 30 30 20 ZONTAL = 0x0400
0eb0: 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b }..enum : uint {
0ec0: 20 43 4f 4d 4d 4f 4e 5f 4c 56 42 5f 47 52 49 44 COMMON_LVB_GRID
0ed0: 5f 4c 56 45 52 54 49 43 41 4c 20 3d 20 30 78 30 _LVERTICAL = 0x0
0ee0: 38 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 800 }..enum : ui
0ef0: 6e 74 20 7b 20 43 4f 4d 4d 4f 4e 5f 4c 56 42 5f nt { COMMON_LVB_
0f00: 47 52 49 44 5f 52 56 45 52 54 49 43 41 4c 20 3d GRID_RVERTICAL =
0f10: 20 30 78 31 30 30 30 20 7d 0d 0a 65 6e 75 6d 20 0x1000 }..enum
0f20: 3a 20 75 69 6e 74 20 7b 20 43 4f 4d 4d 4f 4e 5f : uint { COMMON_
0f30: 4c 56 42 5f 52 45 56 45 52 53 45 5f 56 49 44 45 LVB_REVERSE_VIDE
0f40: 4f 20 3d 20 30 78 34 30 30 30 20 7d 0d 0a 65 6e O = 0x4000 }..en
0f50: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4d 4d um : uint { COMM
0f60: 4f 4e 5f 4c 56 42 5f 55 4e 44 45 52 53 43 4f 52 ON_LVB_UNDERSCOR
0f70: 45 20 3d 20 30 78 38 30 30 30 20 7d 0d 0a 0d 0a E = 0x8000 }....
0f80: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f enum : uint { CO
0f90: 4d 4d 4f 4e 5f 4c 56 42 5f 53 42 43 53 44 42 43 MMON_LVB_SBCSDBC
0fa0: 53 20 3d 20 30 78 30 33 30 30 20 7d 0d 0a 0d 0a S = 0x0300 }....
0fb0: 73 74 72 75 63 74 20 5f 43 4f 4e 53 4f 4c 45 5f struct _CONSOLE_
0fc0: 53 43 52 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e SCREEN_BUFFER_IN
0fd0: 46 4f 20 7b 0d 0a 20 20 43 4f 4f 52 44 20 64 77 FO {.. COORD dw
0fe0: 53 69 7a 65 3b 0d 0a 20 20 43 4f 4f 52 44 20 64 Size;.. COORD d
0ff0: 77 43 75 72 73 6f 72 50 6f 73 69 74 69 6f 6e 3b wCursorPosition;
1000: 0d 0a 20 20 57 4f 52 44 20 77 41 74 74 72 69 62 .. WORD wAttrib
1010: 75 74 65 73 3b 0d 0a 20 20 53 4d 41 4c 4c 5f 52 utes;.. SMALL_R
1020: 45 43 54 20 73 72 57 69 6e 64 6f 77 3b 0d 0a 20 ECT srWindow;..
1030: 20 43 4f 4f 52 44 20 64 77 4d 61 78 69 6d 75 6d COORD dwMaximum
1040: 57 69 6e 64 6f 77 53 69 7a 65 3b 0d 0a 7d 0d 0a WindowSize;..}..
1050: 61 6c 69 61 73 20 5f 43 4f 4e 53 4f 4c 45 5f 53 alias _CONSOLE_S
1060: 43 52 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e 46 CREEN_BUFFER_INF
1070: 4f 20 43 4f 4e 53 4f 4c 45 5f 53 43 52 45 45 4e O CONSOLE_SCREEN
1080: 5f 42 55 46 46 45 52 5f 49 4e 46 4f 3b 0d 0a 61 _BUFFER_INFO;..a
1090: 6c 69 61 73 20 5f 43 4f 4e 53 4f 4c 45 5f 53 43 lias _CONSOLE_SC
10a0: 52 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e 46 4f REEN_BUFFER_INFO
10b0: 2a 20 50 43 4f 4e 53 4f 4c 45 5f 53 43 52 45 45 * PCONSOLE_SCREE
10c0: 4e 5f 42 55 46 46 45 52 5f 49 4e 46 4f 3b 0d 0a N_BUFFER_INFO;..
10d0: 0d 0a 73 74 72 75 63 74 20 5f 43 4f 4e 53 4f 4c ..struct _CONSOL
10e0: 45 5f 43 55 52 53 4f 52 5f 49 4e 46 4f 20 7b 0d E_CURSOR_INFO {.
10f0: 0a 20 20 44 57 4f 52 44 20 64 77 53 69 7a 65 3b . DWORD dwSize;
1100: 0d 0a 20 20 42 4f 4f 4c 20 62 56 69 73 69 62 6c .. BOOL bVisibl
1110: 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 43 4f e;..}..alias _CO
1120: 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 5f 49 4e 46 NSOLE_CURSOR_INF
1130: 4f 20 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 O CONSOLE_CURSOR
1140: 5f 49 4e 46 4f 3b 0d 0a 61 6c 69 61 73 20 5f 43 _INFO;..alias _C
1150: 4f 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 5f 49 4e ONSOLE_CURSOR_IN
1160: 46 4f 2a 20 50 43 4f 4e 53 4f 4c 45 5f 43 55 52 FO* PCONSOLE_CUR
1170: 53 4f 52 5f 49 4e 46 4f 3b 0d 0a 0d 0a 73 74 72 SOR_INFO;....str
1180: 75 63 74 20 5f 43 4f 4e 53 4f 4c 45 5f 46 4f 4e uct _CONSOLE_FON
1190: 54 5f 49 4e 46 4f 20 7b 0d 0a 20 20 44 57 4f 52 T_INFO {.. DWOR
11a0: 44 20 6e 46 6f 6e 74 3b 0d 0a 20 20 43 4f 4f 52 D nFont;.. COOR
11b0: 44 20 64 77 46 6f 6e 74 53 69 7a 65 3b 0d 0a 7d D dwFontSize;..}
11c0: 0d 0a 61 6c 69 61 73 20 5f 43 4f 4e 53 4f 4c 45 ..alias _CONSOLE
11d0: 5f 46 4f 4e 54 5f 49 4e 46 4f 20 43 4f 4e 53 4f _FONT_INFO CONSO
11e0: 4c 45 5f 46 4f 4e 54 5f 49 4e 46 4f 3b 0d 0a 61 LE_FONT_INFO;..a
11f0: 6c 69 61 73 20 5f 43 4f 4e 53 4f 4c 45 5f 46 4f lias _CONSOLE_FO
1200: 4e 54 5f 49 4e 46 4f 2a 20 50 43 4f 4e 53 4f 4c NT_INFO* PCONSOL
1210: 45 5f 46 4f 4e 54 5f 49 4e 46 4f 3b 0d 0a 0d 0a E_FONT_INFO;....
1220: 2f 2f 20 23 69 66 28 5f 57 49 4e 33 32 5f 57 49 // #if(_WIN32_WI
1230: 4e 4e 54 20 3e 3d 20 30 78 30 35 30 30 29 0d 0a NNT >= 0x0500)..
1240: 73 74 72 75 63 74 20 5f 43 4f 4e 53 4f 4c 45 5f struct _CONSOLE_
1250: 53 45 4c 45 43 54 49 4f 4e 5f 49 4e 46 4f 20 7b SELECTION_INFO {
1260: 0d 0a 20 20 44 57 4f 52 44 20 64 77 46 6c 61 67 .. DWORD dwFlag
1270: 73 3b 0d 0a 20 20 43 4f 4f 52 44 20 64 77 53 65 s;.. COORD dwSe
1280: 6c 65 63 74 69 6f 6e 41 6e 63 68 6f 72 3b 0d 0a lectionAnchor;..
1290: 20 20 53 4d 41 4c 4c 5f 52 45 43 54 20 73 72 53 SMALL_RECT srS
12a0: 65 6c 65 63 74 69 6f 6e 3b 0d 0a 7d 0d 0a 61 6c election;..}..al
12b0: 69 61 73 20 5f 43 4f 4e 53 4f 4c 45 5f 53 45 4c ias _CONSOLE_SEL
12c0: 45 43 54 49 4f 4e 5f 49 4e 46 4f 20 43 4f 4e 53 ECTION_INFO CONS
12d0: 4f 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f 49 4e OLE_SELECTION_IN
12e0: 46 4f 3b 0d 0a 61 6c 69 61 73 20 5f 43 4f 4e 53 FO;..alias _CONS
12f0: 4f 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f 49 4e OLE_SELECTION_IN
1300: 46 4f 2a 20 50 43 4f 4e 53 4f 4c 45 5f 53 45 4c FO* PCONSOLE_SEL
1310: 45 43 54 49 4f 4e 5f 49 4e 46 4f 3b 0d 0a 0d 0a ECTION_INFO;....
1320: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f enum : uint { CO
1330: 4e 53 4f 4c 45 5f 4e 4f 5f 53 45 4c 45 43 54 49 NSOLE_NO_SELECTI
1340: 4f 4e 20 3d 20 30 78 30 30 30 30 20 7d 0d 0a 65 ON = 0x0000 }..e
1350: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4e num : uint { CON
1360: 53 4f 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f 49 SOLE_SELECTION_I
1370: 4e 5f 50 52 4f 47 52 45 53 53 20 3d 20 30 78 30 N_PROGRESS = 0x0
1380: 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 001 }..enum : ui
1390: 6e 74 20 7b 20 43 4f 4e 53 4f 4c 45 5f 53 45 4c nt { CONSOLE_SEL
13a0: 45 43 54 49 4f 4e 5f 4e 4f 54 5f 45 4d 50 54 59 ECTION_NOT_EMPTY
13b0: 20 3d 20 30 78 30 30 30 32 20 7d 0d 0a 65 6e 75 = 0x0002 }..enu
13c0: 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4e 53 4f m : uint { CONSO
13d0: 4c 45 5f 4d 4f 55 53 45 5f 53 45 4c 45 43 54 49 LE_MOUSE_SELECTI
13e0: 4f 4e 20 3d 20 30 78 30 30 30 34 20 7d 0d 0a 65 ON = 0x0004 }..e
13f0: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4e num : uint { CON
1400: 53 4f 4c 45 5f 4d 4f 55 53 45 5f 44 4f 57 4e 20 SOLE_MOUSE_DOWN
1410: 3d 20 30 78 30 30 30 38 20 7d 0d 0a 2f 2f 20 23 = 0x0008 }..// #
1420: 65 6e 64 69 66 20 2f 2a 20 5f 57 49 4e 33 32 5f endif /* _WIN32_
1430: 57 49 4e 4e 54 20 3e 3d 20 30 78 30 35 30 30 20 WINNT >= 0x0500
1440: 2a 2f 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e */....extern(Win
1450: 64 6f 77 73 29 20 61 6c 69 61 73 20 42 4f 4f 4c dows) alias BOOL
1460: 20 66 75 6e 63 74 69 6f 6e 28 20 44 57 4f 52 44 function( DWORD
1470: 20 43 74 72 6c 54 79 70 65 20 29 20 50 48 41 4e CtrlType ) PHAN
1480: 44 4c 45 52 5f 52 4f 55 54 49 4e 45 3b 0d 0a 0d DLER_ROUTINE;...
1490: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 .enum : uint { C
14a0: 54 52 4c 5f 43 5f 45 56 45 4e 54 20 3d 20 30 20 TRL_C_EVENT = 0
14b0: 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b }..enum : uint {
14c0: 20 43 54 52 4c 5f 42 52 45 41 4b 5f 45 56 45 4e CTRL_BREAK_EVEN
14d0: 54 20 3d 20 31 20 7d 0d 0a 65 6e 75 6d 20 3a 20 T = 1 }..enum :
14e0: 75 69 6e 74 20 7b 20 43 54 52 4c 5f 43 4c 4f 53 uint { CTRL_CLOS
14f0: 45 5f 45 56 45 4e 54 20 3d 20 32 20 7d 0d 0a 0d E_EVENT = 2 }...
1500: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 .enum : uint { C
1510: 54 52 4c 5f 4c 4f 47 4f 46 46 5f 45 56 45 4e 54 TRL_LOGOFF_EVENT
1520: 20 3d 20 35 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 = 5 }..enum : u
1530: 69 6e 74 20 7b 20 43 54 52 4c 5f 53 48 55 54 44 int { CTRL_SHUTD
1540: 4f 57 4e 5f 45 56 45 4e 54 20 3d 20 36 20 7d 0d OWN_EVENT = 6 }.
1550: 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b ...enum : uint {
1560: 20 45 4e 41 42 4c 45 5f 50 52 4f 43 45 53 53 45 ENABLE_PROCESSE
1570: 44 5f 49 4e 50 55 54 20 3d 20 30 78 30 30 30 31 D_INPUT = 0x0001
1580: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
1590: 7b 20 45 4e 41 42 4c 45 5f 4c 49 4e 45 5f 49 4e { ENABLE_LINE_IN
15a0: 50 55 54 20 3d 20 30 78 30 30 30 32 20 7d 0d 0a PUT = 0x0002 }..
15b0: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 45 4e enum : uint { EN
15c0: 41 42 4c 45 5f 45 43 48 4f 5f 49 4e 50 55 54 20 ABLE_ECHO_INPUT
15d0: 3d 20 30 78 30 30 30 34 20 7d 0d 0a 65 6e 75 6d = 0x0004 }..enum
15e0: 20 3a 20 75 69 6e 74 20 7b 20 45 4e 41 42 4c 45 : uint { ENABLE
15f0: 5f 57 49 4e 44 4f 57 5f 49 4e 50 55 54 20 3d 20 _WINDOW_INPUT =
1600: 30 78 30 30 30 38 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0008 }..enum :
1610: 20 75 69 6e 74 20 7b 20 45 4e 41 42 4c 45 5f 4d uint { ENABLE_M
1620: 4f 55 53 45 5f 49 4e 50 55 54 20 3d 20 30 78 30 OUSE_INPUT = 0x0
1630: 30 31 30 20 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 010 }....enum :
1640: 75 69 6e 74 20 7b 20 45 4e 41 42 4c 45 5f 50 52 uint { ENABLE_PR
1650: 4f 43 45 53 53 45 44 5f 4f 55 54 50 55 54 20 3d OCESSED_OUTPUT =
1660: 20 30 78 30 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 0x0001 }..enum
1670: 3a 20 75 69 6e 74 20 7b 20 45 4e 41 42 4c 45 5f : uint { ENABLE_
1680: 57 52 41 50 5f 41 54 5f 45 4f 4c 5f 4f 55 54 50 WRAP_AT_EOL_OUTP
1690: 55 54 20 3d 20 30 78 30 30 30 32 20 7d 0d 0a 0d UT = 0x0002 }...
16a0: 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 .extern(Windows)
16b0: 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 50 65 65 export BOOL Pee
16c0: 6b 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 41 28 0d kConsoleInputA(.
16d0: 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f . HANDLE hConso
16e0: 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 50 49 4e 50 leInput,.. PINP
16f0: 55 54 5f 52 45 43 4f 52 44 20 6c 70 42 75 66 66 UT_RECORD lpBuff
1700: 65 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4c 65 er,.. DWORD nLe
1710: 6e 67 74 68 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 ngth,.. LPDWORD
1720: 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 6e 74 lpNumberOfEvent
1730: 73 52 65 61 64 29 3b 0d 0a 65 78 74 65 72 6e 28 sRead);..extern(
1740: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
1750: 42 4f 4f 4c 20 50 65 65 6b 43 6f 6e 73 6f 6c 65 BOOL PeekConsole
1760: 49 6e 70 75 74 57 28 0d 0a 20 20 48 41 4e 44 4c InputW(.. HANDL
1770: 45 20 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c E hConsoleInput,
1780: 0d 0a 20 20 50 49 4e 50 55 54 5f 52 45 43 4f 52 .. PINPUT_RECOR
1790: 44 20 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 44 D lpBuffer,.. D
17a0: 57 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 WORD nLength,..
17b0: 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 LPDWORD lpNumbe
17c0: 72 4f 66 45 76 65 6e 74 73 52 65 61 64 29 3b 0d rOfEventsRead);.
17d0: 0a 2f 2f 20 23 69 66 64 65 66 20 55 4e 49 43 4f .// #ifdef UNICO
17e0: 44 45 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 DE..// #.....//
17f0: 23 65 6c 73 65 0d 0a 61 6c 69 61 73 20 50 65 65 #else..alias Pee
1800: 6b 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 41 20 50 kConsoleInputA P
1810: 65 65 6b 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 3b eekConsoleInput;
1820: 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 21 ..// #endif // !
1830: 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 UNICODE....exter
1840: 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 n(Windows) expor
1850: 74 20 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f t BOOL ReadConso
1860: 6c 65 49 6e 70 75 74 41 28 0d 0a 20 20 48 41 4e leInputA(.. HAN
1870: 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 DLE hConsoleInpu
1880: 74 2c 0d 0a 20 20 50 49 4e 50 55 54 5f 52 45 43 t,.. PINPUT_REC
1890: 4f 52 44 20 6c 70 42 75 66 66 65 72 2c 0d 0a 20 ORD lpBuffer,..
18a0: 20 44 57 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d DWORD nLength,.
18b0: 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d . LPDWORD lpNum
18c0: 62 65 72 4f 66 45 76 65 6e 74 73 52 65 61 64 29 berOfEventsRead)
18d0: 3b 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 ;..extern(Window
18e0: 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 52 s) export BOOL R
18f0: 65 61 64 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 eadConsoleInputW
1900: 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e (.. HANDLE hCon
1910: 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 50 49 soleInput,.. PI
1920: 4e 50 55 54 5f 52 45 43 4f 52 44 20 6c 70 42 75 NPUT_RECORD lpBu
1930: 66 66 65 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e ffer,.. DWORD n
1940: 4c 65 6e 67 74 68 2c 0d 0a 20 20 4c 50 44 57 4f Length,.. LPDWO
1950: 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 RD lpNumberOfEve
1960: 6e 74 73 52 65 61 64 29 3b 0d 0a 2f 2f 20 23 69 ntsRead);..// #i
1970: 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a 2f 2f fdef UNICODE..//
1980: 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c 73 65 0d #.....// #else.
1990: 0a 61 6c 69 61 73 20 52 65 61 64 43 6f 6e 73 6f .alias ReadConso
19a0: 6c 65 49 6e 70 75 74 41 20 52 65 61 64 43 6f 6e leInputA ReadCon
19b0: 73 6f 6c 65 49 6e 70 75 74 3b 0d 0a 2f 2f 20 23 soleInput;..// #
19c0: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
19d0: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
19e0: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
19f0: 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 WriteConsoleInp
1a00: 75 74 41 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 utA(.. HANDLE h
1a10: 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 ConsoleInput,..
1a20: 20 49 4e 50 55 54 5f 52 45 43 4f 52 44 20 2a 6c INPUT_RECORD *l
1a30: 70 42 75 66 66 65 72 2c 0d 0a 20 20 44 57 4f 52 pBuffer,.. DWOR
1a40: 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 20 4c 50 D nLength,.. LP
1a50: 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 DWORD lpNumberOf
1a60: 45 76 65 6e 74 73 57 72 69 74 74 65 6e 29 3b 0d EventsWritten);.
1a70: 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 .extern(Windows)
1a80: 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 57 72 69 export BOOL Wri
1a90: 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 28 teConsoleInputW(
1aa0: 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 .. HANDLE hCons
1ab0: 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 49 4e 50 oleInput,.. INP
1ac0: 55 54 5f 52 45 43 4f 52 44 20 2a 6c 70 42 75 66 UT_RECORD *lpBuf
1ad0: 66 65 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4c fer,.. DWORD nL
1ae0: 65 6e 67 74 68 2c 0d 0a 20 20 4c 50 44 57 4f 52 ength,.. LPDWOR
1af0: 44 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 6e D lpNumberOfEven
1b00: 74 73 57 72 69 74 74 65 6e 29 3b 0d 0a 2f 2f 20 tsWritten);..//
1b10: 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a #ifdef UNICODE..
1b20: 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c 73 // #.....// #els
1b30: 65 0d 0a 61 6c 69 61 73 20 57 72 69 74 65 43 6f e..alias WriteCo
1b40: 6e 73 6f 6c 65 49 6e 70 75 74 41 20 57 72 69 74 nsoleInputA Writ
1b50: 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 3b 0d 0a eConsoleInput;..
1b60: 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 21 55 4e // #endif // !UN
1b70: 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 ICODE....extern(
1b80: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
1b90: 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 BOOL ReadConsole
1ba0: 4f 75 74 70 75 74 41 28 0d 0a 20 20 48 41 4e 44 OutputA(.. HAND
1bb0: 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 LE hConsoleOutpu
1bc0: 74 2c 0d 0a 20 20 50 43 48 41 52 5f 49 4e 46 4f t,.. PCHAR_INFO
1bd0: 20 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 43 4f lpBuffer,.. CO
1be0: 4f 52 44 20 64 77 42 75 66 66 65 72 53 69 7a 65 ORD dwBufferSize
1bf0: 2c 0d 0a 20 20 43 4f 4f 52 44 20 64 77 42 75 66 ,.. COORD dwBuf
1c00: 66 65 72 43 6f 6f 72 64 2c 0d 0a 20 20 50 53 4d ferCoord,.. PSM
1c10: 41 4c 4c 5f 52 45 43 54 20 6c 70 52 65 61 64 52 ALL_RECT lpReadR
1c20: 65 67 69 6f 6e 29 3b 0d 0a 65 78 74 65 72 6e 28 egion);..extern(
1c30: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
1c40: 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 BOOL ReadConsole
1c50: 4f 75 74 70 75 74 57 28 0d 0a 20 20 48 41 4e 44 OutputW(.. HAND
1c60: 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 LE hConsoleOutpu
1c70: 74 2c 0d 0a 20 20 50 43 48 41 52 5f 49 4e 46 4f t,.. PCHAR_INFO
1c80: 20 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 43 4f lpBuffer,.. CO
1c90: 4f 52 44 20 64 77 42 75 66 66 65 72 53 69 7a 65 ORD dwBufferSize
1ca0: 2c 0d 0a 20 20 43 4f 4f 52 44 20 64 77 42 75 66 ,.. COORD dwBuf
1cb0: 66 65 72 43 6f 6f 72 64 2c 0d 0a 20 20 50 53 4d ferCoord,.. PSM
1cc0: 41 4c 4c 5f 52 45 43 54 20 6c 70 52 65 61 64 52 ALL_RECT lpReadR
1cd0: 65 67 69 6f 6e 29 3b 0d 0a 2f 2f 20 23 69 66 64 egion);..// #ifd
1ce0: 65 66 20 55 4e 49 43 4f 44 45 0d 0a 2f 2f 20 23 ef UNICODE..// #
1cf0: 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c 73 65 0d 0a 61 .....// #else..a
1d00: 6c 69 61 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 lias ReadConsole
1d10: 4f 75 74 70 75 74 41 20 52 65 61 64 43 6f 6e 73 OutputA ReadCons
1d20: 6f 6c 65 4f 75 74 70 75 74 3b 0d 0a 2f 2f 20 23 oleOutput;..// #
1d30: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
1d40: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
1d50: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
1d60: 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 WriteConsoleOut
1d70: 70 75 74 41 28 0d 0a 20 20 48 41 4e 44 4c 45 20 putA(.. HANDLE
1d80: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
1d90: 0a 20 20 43 48 41 52 5f 49 4e 46 4f 20 2a 6c 70 . CHAR_INFO *lp
1da0: 42 75 66 66 65 72 2c 0d 0a 20 20 43 4f 4f 52 44 Buffer,.. COORD
1db0: 20 64 77 42 75 66 66 65 72 53 69 7a 65 2c 0d 0a dwBufferSize,..
1dc0: 20 20 43 4f 4f 52 44 20 64 77 42 75 66 66 65 72 COORD dwBuffer
1dd0: 43 6f 6f 72 64 2c 0d 0a 20 20 50 53 4d 41 4c 4c Coord,.. PSMALL
1de0: 5f 52 45 43 54 20 6c 70 57 72 69 74 65 52 65 67 _RECT lpWriteReg
1df0: 69 6f 6e 29 3b 0d 0a 65 78 74 65 72 6e 28 57 69 ion);..extern(Wi
1e00: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
1e10: 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f OL WriteConsoleO
1e20: 75 74 70 75 74 57 28 0d 0a 20 20 48 41 4e 44 4c utputW(.. HANDL
1e30: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
1e40: 2c 0d 0a 20 20 43 48 41 52 5f 49 4e 46 4f 20 2a ,.. CHAR_INFO *
1e50: 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 43 4f 4f lpBuffer,.. COO
1e60: 52 44 20 64 77 42 75 66 66 65 72 53 69 7a 65 2c RD dwBufferSize,
1e70: 0d 0a 20 20 43 4f 4f 52 44 20 64 77 42 75 66 66 .. COORD dwBuff
1e80: 65 72 43 6f 6f 72 64 2c 0d 0a 20 20 50 53 4d 41 erCoord,.. PSMA
1e90: 4c 4c 5f 52 45 43 54 20 6c 70 57 72 69 74 65 52 LL_RECT lpWriteR
1ea0: 65 67 69 6f 6e 29 3b 0d 0a 2f 2f 20 23 69 66 64 egion);..// #ifd
1eb0: 65 66 20 55 4e 49 43 4f 44 45 0d 0a 2f 2f 20 23 ef UNICODE..// #
1ec0: 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c 73 65 0d 0a 61 .....// #else..a
1ed0: 6c 69 61 73 20 57 72 69 74 65 43 6f 6e 73 6f 6c lias WriteConsol
1ee0: 65 4f 75 74 70 75 74 41 20 57 72 69 74 65 43 6f eOutputA WriteCo
1ef0: 6e 73 6f 6c 65 4f 75 74 70 75 74 3b 0d 0a 2f 2f nsoleOutput;..//
1f00: 20 23 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 #endif // !UNIC
1f10: 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 ODE....extern(Wi
1f20: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
1f30: 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 OL ReadConsoleOu
1f40: 74 70 75 74 43 68 61 72 61 63 74 65 72 41 28 0d tputCharacterA(.
1f50: 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f . HANDLE hConso
1f60: 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 4c 50 53 leOutput,.. LPS
1f70: 54 52 20 6c 70 43 68 61 72 61 63 74 65 72 2c 0d TR lpCharacter,.
1f80: 0a 20 20 44 57 4f 52 44 20 6e 4c 65 6e 67 74 68 . DWORD nLength
1f90: 2c 0d 0a 20 20 43 4f 4f 52 44 20 64 77 52 65 61 ,.. COORD dwRea
1fa0: 64 43 6f 6f 72 64 2c 0d 0a 20 20 4c 50 44 57 4f dCoord,.. LPDWO
1fb0: 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 43 68 61 RD lpNumberOfCha
1fc0: 72 73 52 65 61 64 29 3b 0d 0a 65 78 74 65 72 6e rsRead);..extern
1fd0: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
1fe0: 20 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c BOOL ReadConsol
1ff0: 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 72 eOutputCharacter
2000: 57 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f W(.. HANDLE hCo
2010: 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 nsoleOutput,..
2020: 4c 50 57 53 54 52 20 6c 70 43 68 61 72 61 63 74 LPWSTR lpCharact
2030: 65 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4c 65 er,.. DWORD nLe
2040: 6e 67 74 68 2c 0d 0a 20 20 43 4f 4f 52 44 20 64 ngth,.. COORD d
2050: 77 52 65 61 64 43 6f 6f 72 64 2c 0d 0a 20 20 4c wReadCoord,.. L
2060: 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 4f PDWORD lpNumberO
2070: 66 43 68 61 72 73 52 65 61 64 29 3b 0d 0a 2f 2f fCharsRead);..//
2080: 20 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d #ifdef UNICODE.
2090: 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c .// #.....// #el
20a0: 73 65 0d 0a 61 6c 69 61 73 20 52 65 61 64 43 6f se..alias ReadCo
20b0: 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 nsoleOutputChara
20c0: 63 74 65 72 41 20 52 65 61 64 43 6f 6e 73 6f 6c cterA ReadConsol
20d0: 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 72 eOutputCharacter
20e0: 3b 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 ;..// #endif //
20f0: 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 !UNICODE....exte
2100: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
2110: 72 74 20 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 rt BOOL ReadCons
2120: 6f 6c 65 4f 75 74 70 75 74 41 74 74 72 69 62 75 oleOutputAttribu
2130: 74 65 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 te(.. HANDLE hC
2140: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 onsoleOutput,..
2150: 20 4c 50 57 4f 52 44 20 6c 70 41 74 74 72 69 62 LPWORD lpAttrib
2160: 75 74 65 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4c ute,.. DWORD nL
2170: 65 6e 67 74 68 2c 0d 0a 20 20 43 4f 4f 52 44 20 ength,.. COORD
2180: 64 77 52 65 61 64 43 6f 6f 72 64 2c 0d 0a 20 20 dwReadCoord,..
2190: 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 LPDWORD lpNumber
21a0: 4f 66 41 74 74 72 73 52 65 61 64 29 3b 0d 0a 0d OfAttrsRead);...
21b0: 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 .extern(Windows)
21c0: 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 57 72 69 export BOOL Wri
21d0: 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 teConsoleOutputC
21e0: 68 61 72 61 63 74 65 72 41 28 0d 0a 20 20 48 41 haracterA(.. HA
21f0: 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 NDLE hConsoleOut
2200: 70 75 74 2c 0d 0a 20 20 4c 50 43 53 54 52 20 6c put,.. LPCSTR l
2210: 70 43 68 61 72 61 63 74 65 72 2c 0d 0a 20 20 44 pCharacter,.. D
2220: 57 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 WORD nLength,..
2230: 20 43 4f 4f 52 44 20 64 77 57 72 69 74 65 43 6f COORD dwWriteCo
2240: 6f 72 64 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 20 ord,.. LPDWORD
2250: 6c 70 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 57 lpNumberOfCharsW
2260: 72 69 74 74 65 6e 29 3b 0d 0a 65 78 74 65 72 6e ritten);..extern
2270: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
2280: 20 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f BOOL WriteConso
2290: 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 leOutputCharacte
22a0: 72 57 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 rW(.. HANDLE hC
22b0: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 onsoleOutput,..
22c0: 20 4c 50 43 57 53 54 52 20 6c 70 43 68 61 72 61 LPCWSTR lpChara
22d0: 63 74 65 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e cter,.. DWORD n
22e0: 4c 65 6e 67 74 68 2c 0d 0a 20 20 43 4f 4f 52 44 Length,.. COORD
22f0: 20 64 77 57 72 69 74 65 43 6f 6f 72 64 2c 0d 0a dwWriteCoord,..
2300: 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 LPDWORD lpNumb
2310: 65 72 4f 66 43 68 61 72 73 57 72 69 74 74 65 6e erOfCharsWritten
2320: 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 66 20 55 4e );..// #ifdef UN
2330: 49 43 4f 44 45 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a ICODE..// #.....
2340: 2f 2f 20 23 65 6c 73 65 0d 0a 61 6c 69 61 73 20 // #else..alias
2350: 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 WriteConsoleOutp
2360: 75 74 43 68 61 72 61 63 74 65 72 41 20 57 72 69 utCharacterA Wri
2370: 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 teConsoleOutputC
2380: 68 61 72 61 63 74 65 72 3b 0d 0a 2f 2f 20 23 65 haracter;..// #e
2390: 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 45 ndif // !UNICODE
23a0: 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f ....extern(Windo
23b0: 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 ws) export BOOL
23c0: 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 WriteConsoleOutp
23d0: 75 74 41 74 74 72 69 62 75 74 65 28 0d 0a 20 20 utAttribute(..
23e0: 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f HANDLE hConsoleO
23f0: 75 74 70 75 74 2c 0d 0a 20 20 57 4f 52 44 20 2a utput,.. WORD *
2400: 6c 70 41 74 74 72 69 62 75 74 65 2c 0d 0a 20 20 lpAttribute,..
2410: 44 57 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a DWORD nLength,..
2420: 20 20 43 4f 4f 52 44 20 64 77 57 72 69 74 65 43 COORD dwWriteC
2430: 6f 6f 72 64 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 oord,.. LPDWORD
2440: 20 6c 70 4e 75 6d 62 65 72 4f 66 41 74 74 72 73 lpNumberOfAttrs
2450: 57 72 69 74 74 65 6e 29 3b 0d 0a 0d 0a 65 78 74 Written);....ext
2460: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
2470: 6f 72 74 20 42 4f 4f 4c 20 46 69 6c 6c 43 6f 6e ort BOOL FillCon
2480: 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 soleOutputCharac
2490: 74 65 72 41 28 0d 0a 20 20 48 41 4e 44 4c 45 20 terA(.. HANDLE
24a0: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
24b0: 0a 20 20 43 48 41 52 20 63 43 68 61 72 61 63 74 . CHAR cCharact
24c0: 65 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4c 65 er,.. DWORD nLe
24d0: 6e 67 74 68 2c 0d 0a 20 20 43 4f 4f 52 44 20 64 ngth,.. COORD d
24e0: 77 57 72 69 74 65 43 6f 6f 72 64 2c 0d 0a 20 20 wWriteCoord,..
24f0: 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 LPDWORD lpNumber
2500: 4f 66 43 68 61 72 73 57 72 69 74 74 65 6e 29 3b OfCharsWritten);
2510: 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 ..extern(Windows
2520: 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 46 69 ) export BOOL Fi
2530: 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 llConsoleOutputC
2540: 68 61 72 61 63 74 65 72 57 28 0d 0a 20 20 48 41 haracterW(.. HA
2550: 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 NDLE hConsoleOut
2560: 70 75 74 2c 0d 0a 20 20 57 43 48 41 52 20 63 43 put,.. WCHAR cC
2570: 68 61 72 61 63 74 65 72 2c 0d 0a 20 20 44 57 4f haracter,.. DWO
2580: 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 20 43 RD nLength,.. C
2590: 4f 4f 52 44 20 64 77 57 72 69 74 65 43 6f 6f 72 OORD dwWriteCoor
25a0: 64 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 d,.. LPDWORD lp
25b0: 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 57 72 69 NumberOfCharsWri
25c0: 74 74 65 6e 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 tten);..// #ifde
25d0: 66 20 55 4e 49 43 4f 44 45 0d 0a 2f 2f 20 23 2e f UNICODE..// #.
25e0: 2e 2e 0d 0a 2f 2f 20 23 65 6c 73 65 0d 0a 61 6c ....// #else..al
25f0: 69 61 73 20 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f ias FillConsoleO
2600: 75 74 70 75 74 43 68 61 72 61 63 74 65 72 41 20 utputCharacterA
2610: 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 FillConsoleOutpu
2620: 74 43 68 61 72 61 63 74 65 72 3b 0d 0a 2f 2f 20 tCharacter;..//
2630: 23 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f #endif // !UNICO
2640: 44 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e DE....extern(Win
2650: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f dows) export BOO
2660: 4c 20 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 L FillConsoleOut
2670: 70 75 74 41 74 74 72 69 62 75 74 65 28 0d 0a 20 putAttribute(..
2680: 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 HANDLE hConsole
2690: 4f 75 74 70 75 74 2c 0d 0a 20 20 57 4f 52 44 20 Output,.. WORD
26a0: 77 41 74 74 72 69 62 75 74 65 2c 0d 0a 20 20 44 wAttribute,.. D
26b0: 57 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 WORD nLength,..
26c0: 20 43 4f 4f 52 44 20 64 77 57 72 69 74 65 43 6f COORD dwWriteCo
26d0: 6f 72 64 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 20 ord,.. LPDWORD
26e0: 6c 70 4e 75 6d 62 65 72 4f 66 41 74 74 72 73 57 lpNumberOfAttrsW
26f0: 72 69 74 74 65 6e 29 3b 0d 0a 0d 0a 65 78 74 65 ritten);....exte
2700: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
2710: 72 74 20 42 4f 4f 4c 20 47 65 74 43 6f 6e 73 6f rt BOOL GetConso
2720: 6c 65 4d 6f 64 65 28 0d 0a 20 20 48 41 4e 44 4c leMode(.. HANDL
2730: 45 20 68 43 6f 6e 73 6f 6c 65 48 61 6e 64 6c 65 E hConsoleHandle
2740: 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 4d ,.. LPDWORD lpM
2750: 6f 64 65 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 ode);....extern(
2760: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
2770: 42 4f 4f 4c 20 47 65 74 4e 75 6d 62 65 72 4f 66 BOOL GetNumberOf
2780: 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 45 76 65 6e ConsoleInputEven
2790: 74 73 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 ts(.. HANDLE hC
27a0: 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 onsoleInput,..
27b0: 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 LPDWORD lpNumber
27c0: 4f 66 45 76 65 6e 74 73 29 3b 0d 0a 0d 0a 65 78 OfEvents);....ex
27d0: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
27e0: 70 6f 72 74 20 42 4f 4f 4c 20 47 65 74 43 6f 6e port BOOL GetCon
27f0: 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 65 72 soleScreenBuffer
2800: 49 6e 66 6f 28 0d 0a 20 20 48 41 4e 44 4c 45 20 Info(.. HANDLE
2810: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
2820: 0a 20 20 50 43 4f 4e 53 4f 4c 45 5f 53 43 52 45 . PCONSOLE_SCRE
2830: 45 4e 5f 42 55 46 46 45 52 5f 49 4e 46 4f 20 6c EN_BUFFER_INFO l
2840: 70 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 75 pConsoleScreenBu
2850: 66 66 65 72 49 6e 66 6f 29 3b 0d 0a 0d 0a 65 78 fferInfo);....ex
2860: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
2870: 70 6f 72 74 20 43 4f 4f 52 44 20 47 65 74 4c 61 port COORD GetLa
2880: 72 67 65 73 74 43 6f 6e 73 6f 6c 65 57 69 6e 64 rgestConsoleWind
2890: 6f 77 53 69 7a 65 28 0d 0a 20 20 48 41 4e 44 4c owSize(.. HANDL
28a0: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
28b0: 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e );....extern(Win
28c0: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f dows) export BOO
28d0: 4c 20 47 65 74 43 6f 6e 73 6f 6c 65 43 75 72 73 L GetConsoleCurs
28e0: 6f 72 49 6e 66 6f 28 0d 0a 20 20 48 41 4e 44 4c orInfo(.. HANDL
28f0: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
2900: 2c 0d 0a 20 20 50 43 4f 4e 53 4f 4c 45 5f 43 55 ,.. PCONSOLE_CU
2910: 52 53 4f 52 5f 49 4e 46 4f 20 6c 70 43 6f 6e 73 RSOR_INFO lpCons
2920: 6f 6c 65 43 75 72 73 6f 72 49 6e 66 6f 29 3b 0d oleCursorInfo);.
2930: 0a 0d 0a 2f 2f 20 23 69 66 28 5f 57 49 4e 33 32 ...// #if(_WIN32
2940: 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 35 30 30 _WINNT >= 0x0500
2950: 29 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 )....extern(Wind
2960: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
2970: 20 47 65 74 43 75 72 72 65 6e 74 43 6f 6e 73 6f GetCurrentConso
2980: 6c 65 46 6f 6e 74 28 0d 0a 20 20 48 41 4e 44 4c leFont(.. HANDL
2990: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
29a0: 2c 0d 0a 20 20 42 4f 4f 4c 20 62 4d 61 78 69 6d ,.. BOOL bMaxim
29b0: 75 6d 57 69 6e 64 6f 77 2c 0d 0a 20 20 50 43 4f umWindow,.. PCO
29c0: 4e 53 4f 4c 45 5f 46 4f 4e 54 5f 49 4e 46 4f 20 NSOLE_FONT_INFO
29d0: 6c 70 43 6f 6e 73 6f 6c 65 43 75 72 72 65 6e 74 lpConsoleCurrent
29e0: 46 6f 6e 74 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e Font);....extern
29f0: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
2a00: 20 43 4f 4f 52 44 20 47 65 74 43 6f 6e 73 6f 6c COORD GetConsol
2a10: 65 46 6f 6e 74 53 69 7a 65 28 0d 0a 20 20 48 41 eFontSize(.. HA
2a20: 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 NDLE hConsoleOut
2a30: 70 75 74 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 46 put,.. DWORD nF
2a40: 6f 6e 74 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 ont);....extern(
2a50: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
2a60: 42 4f 4f 4c 20 47 65 74 43 6f 6e 73 6f 6c 65 53 BOOL GetConsoleS
2a70: 65 6c 65 63 74 69 6f 6e 49 6e 66 6f 28 0d 0a 20 electionInfo(..
2a80: 20 50 43 4f 4e 53 4f 4c 45 5f 53 45 4c 45 43 54 PCONSOLE_SELECT
2a90: 49 4f 4e 5f 49 4e 46 4f 20 6c 70 43 6f 6e 73 6f ION_INFO lpConso
2aa0: 6c 65 53 65 6c 65 63 74 69 6f 6e 49 6e 66 6f 29 leSelectionInfo)
2ab0: 3b 0d 0a 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f ;....// #endif /
2ac0: 2a 20 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e * _WIN32_WINNT >
2ad0: 3d 20 30 78 30 35 30 30 20 2a 2f 0d 0a 0d 0a 65 = 0x0500 */....e
2ae0: 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 xtern(Windows) e
2af0: 78 70 6f 72 74 20 42 4f 4f 4c 20 47 65 74 4e 75 xport BOOL GetNu
2b00: 6d 62 65 72 4f 66 43 6f 6e 73 6f 6c 65 4d 6f 75 mberOfConsoleMou
2b10: 73 65 42 75 74 74 6f 6e 73 28 0d 0a 20 20 4c 50 seButtons(.. LP
2b20: 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 DWORD lpNumberOf
2b30: 4d 6f 75 73 65 42 75 74 74 6f 6e 73 29 3b 0d 0a MouseButtons);..
2b40: 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 ..extern(Windows
2b50: 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 53 65 ) export BOOL Se
2b60: 74 43 6f 6e 73 6f 6c 65 4d 6f 64 65 28 0d 0a 20 tConsoleMode(..
2b70: 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 HANDLE hConsole
2b80: 48 61 6e 64 6c 65 2c 0d 0a 20 20 44 57 4f 52 44 Handle,.. DWORD
2b90: 20 64 77 4d 6f 64 65 29 3b 0d 0a 0d 0a 65 78 74 dwMode);....ext
2ba0: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
2bb0: 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 ort BOOL SetCons
2bc0: 6f 6c 65 41 63 74 69 76 65 53 63 72 65 65 6e 42 oleActiveScreenB
2bd0: 75 66 66 65 72 28 0d 0a 20 20 48 41 4e 44 4c 45 uffer(.. HANDLE
2be0: 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 29 hConsoleOutput)
2bf0: 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 ;....extern(Wind
2c00: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
2c10: 20 46 6c 75 73 68 43 6f 6e 73 6f 6c 65 49 6e 70 FlushConsoleInp
2c20: 75 74 42 75 66 66 65 72 28 0d 0a 20 20 48 41 4e utBuffer(.. HAN
2c30: 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 DLE hConsoleInpu
2c40: 74 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 t);....extern(Wi
2c50: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
2c60: 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 53 63 72 OL SetConsoleScr
2c70: 65 65 6e 42 75 66 66 65 72 53 69 7a 65 28 0d 0a eenBufferSize(..
2c80: 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c HANDLE hConsol
2c90: 65 4f 75 74 70 75 74 2c 0d 0a 20 20 43 4f 4f 52 eOutput,.. COOR
2ca0: 44 20 64 77 53 69 7a 65 29 3b 0d 0a 0d 0a 65 78 D dwSize);....ex
2cb0: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
2cc0: 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e port BOOL SetCon
2cd0: 73 6f 6c 65 43 75 72 73 6f 72 50 6f 73 69 74 69 soleCursorPositi
2ce0: 6f 6e 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 on(.. HANDLE hC
2cf0: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 onsoleOutput,..
2d00: 20 43 4f 4f 52 44 20 64 77 43 75 72 73 6f 72 50 COORD dwCursorP
2d10: 6f 73 69 74 69 6f 6e 29 3b 0d 0a 0d 0a 65 78 74 osition);....ext
2d20: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
2d30: 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 ort BOOL SetCons
2d40: 6f 6c 65 43 75 72 73 6f 72 49 6e 66 6f 28 0d 0a oleCursorInfo(..
2d50: 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c HANDLE hConsol
2d60: 65 4f 75 74 70 75 74 2c 0d 0a 20 20 43 4f 4e 53 eOutput,.. CONS
2d70: 4f 4c 45 5f 43 55 52 53 4f 52 5f 49 4e 46 4f 20 OLE_CURSOR_INFO
2d80: 2a 6c 70 43 6f 6e 73 6f 6c 65 43 75 72 73 6f 72 *lpConsoleCursor
2d90: 49 6e 66 6f 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e Info);....extern
2da0: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
2db0: 20 42 4f 4f 4c 20 53 63 72 6f 6c 6c 43 6f 6e 73 BOOL ScrollCons
2dc0: 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 65 72 41 oleScreenBufferA
2dd0: 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e (.. HANDLE hCon
2de0: 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 53 soleOutput,.. S
2df0: 4d 41 4c 4c 5f 52 45 43 54 20 2a 6c 70 53 63 72 MALL_RECT *lpScr
2e00: 6f 6c 6c 52 65 63 74 61 6e 67 6c 65 2c 0d 0a 20 ollRectangle,..
2e10: 20 53 4d 41 4c 4c 5f 52 45 43 54 20 2a 6c 70 43 SMALL_RECT *lpC
2e20: 6c 69 70 52 65 63 74 61 6e 67 6c 65 2c 0d 0a 20 lipRectangle,..
2e30: 20 43 4f 4f 52 44 20 64 77 44 65 73 74 69 6e 61 COORD dwDestina
2e40: 74 69 6f 6e 4f 72 69 67 69 6e 2c 0d 0a 20 20 43 tionOrigin,.. C
2e50: 48 41 52 5f 49 4e 46 4f 20 2a 6c 70 46 69 6c 6c HAR_INFO *lpFill
2e60: 29 3b 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f );..extern(Windo
2e70: 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 ws) export BOOL
2e80: 53 63 72 6f 6c 6c 43 6f 6e 73 6f 6c 65 53 63 72 ScrollConsoleScr
2e90: 65 65 6e 42 75 66 66 65 72 57 28 0d 0a 20 20 48 eenBufferW(.. H
2ea0: 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 ANDLE hConsoleOu
2eb0: 74 70 75 74 2c 0d 0a 20 20 53 4d 41 4c 4c 5f 52 tput,.. SMALL_R
2ec0: 45 43 54 20 2a 6c 70 53 63 72 6f 6c 6c 52 65 63 ECT *lpScrollRec
2ed0: 74 61 6e 67 6c 65 2c 0d 0a 20 20 53 4d 41 4c 4c tangle,.. SMALL
2ee0: 5f 52 45 43 54 20 2a 6c 70 43 6c 69 70 52 65 63 _RECT *lpClipRec
2ef0: 74 61 6e 67 6c 65 2c 0d 0a 20 20 43 4f 4f 52 44 tangle,.. COORD
2f00: 20 64 77 44 65 73 74 69 6e 61 74 69 6f 6e 4f 72 dwDestinationOr
2f10: 69 67 69 6e 2c 0d 0a 20 20 43 48 41 52 5f 49 4e igin,.. CHAR_IN
2f20: 46 4f 20 2a 6c 70 46 69 6c 6c 29 3b 0d 0a 2f 2f FO *lpFill);..//
2f30: 20 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d #ifdef UNICODE.
2f40: 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c .// #.....// #el
2f50: 73 65 0d 0a 61 6c 69 61 73 20 53 63 72 6f 6c 6c se..alias Scroll
2f60: 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 ConsoleScreenBuf
2f70: 66 65 72 41 20 53 63 72 6f 6c 6c 43 6f 6e 73 6f ferA ScrollConso
2f80: 6c 65 53 63 72 65 65 6e 42 75 66 66 65 72 3b 0d leScreenBuffer;.
2f90: 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 21 55 .// #endif // !U
2fa0: 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 6e NICODE....extern
2fb0: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
2fc0: 20 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 BOOL SetConsole
2fd0: 57 69 6e 64 6f 77 49 6e 66 6f 28 0d 0a 20 20 48 WindowInfo(.. H
2fe0: 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 ANDLE hConsoleOu
2ff0: 74 70 75 74 2c 0d 0a 20 20 42 4f 4f 4c 20 62 41 tput,.. BOOL bA
3000: 62 73 6f 6c 75 74 65 2c 0d 0a 20 20 53 4d 41 4c bsolute,.. SMAL
3010: 4c 5f 52 45 43 54 20 2a 6c 70 43 6f 6e 73 6f 6c L_RECT *lpConsol
3020: 65 57 69 6e 64 6f 77 29 3b 0d 0a 0d 0a 65 78 74 eWindow);....ext
3030: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
3040: 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 ort BOOL SetCons
3050: 6f 6c 65 54 65 78 74 41 74 74 72 69 62 75 74 65 oleTextAttribute
3060: 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e (.. HANDLE hCon
3070: 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 57 soleOutput,.. W
3080: 4f 52 44 20 77 41 74 74 72 69 62 75 74 65 73 29 ORD wAttributes)
3090: 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 ;....extern(Wind
30a0: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
30b0: 20 53 65 74 43 6f 6e 73 6f 6c 65 43 74 72 6c 48 SetConsoleCtrlH
30c0: 61 6e 64 6c 65 72 28 0d 0a 20 20 50 48 41 4e 44 andler(.. PHAND
30d0: 4c 45 52 5f 52 4f 55 54 49 4e 45 20 48 61 6e 64 LER_ROUTINE Hand
30e0: 6c 65 72 52 6f 75 74 69 6e 65 2c 0d 0a 20 20 42 lerRoutine,.. B
30f0: 4f 4f 4c 20 41 64 64 29 3b 0d 0a 0d 0a 65 78 74 OOL Add);....ext
3100: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
3110: 6f 72 74 20 42 4f 4f 4c 20 47 65 6e 65 72 61 74 ort BOOL Generat
3120: 65 43 6f 6e 73 6f 6c 65 43 74 72 6c 45 76 65 6e eConsoleCtrlEven
3130: 74 28 0d 0a 20 20 44 57 4f 52 44 20 64 77 43 74 t(.. DWORD dwCt
3140: 72 6c 45 76 65 6e 74 2c 0d 0a 20 20 44 57 4f 52 rlEvent,.. DWOR
3150: 44 20 64 77 50 72 6f 63 65 73 73 47 72 6f 75 70 D dwProcessGroup
3160: 49 64 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 Id);....extern(W
3170: 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 indows) export B
3180: 4f 4f 4c 20 41 6c 6c 6f 63 43 6f 6e 73 6f 6c 65 OOL AllocConsole
3190: 28 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 ();....extern(Wi
31a0: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
31b0: 4f 4c 20 46 72 65 65 43 6f 6e 73 6f 6c 65 28 29 OL FreeConsole()
31c0: 3b 0d 0a 0d 0a 2f 2f 20 23 69 66 28 5f 57 49 4e ;....// #if(_WIN
31d0: 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 35 32_WINNT >= 0x05
31e0: 30 30 29 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 00)..extern(Wind
31f0: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
3200: 20 41 74 74 61 63 68 43 6f 6e 73 6f 6c 65 28 0d AttachConsole(.
3210: 0a 20 20 44 57 4f 52 44 20 64 77 50 72 6f 63 65 . DWORD dwProce
3220: 73 73 49 64 29 3b 0d 0a 2f 2f 20 23 65 6e 64 69 ssId);..// #endi
3230: 66 20 2f 2a 20 5f 57 49 4e 33 32 5f 57 49 4e 4e f /* _WIN32_WINN
3240: 54 20 3e 3d 20 30 78 30 35 30 30 20 2a 2f 0d 0a T >= 0x0500 */..
3250: 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 ..extern(Windows
3260: 29 20 65 78 70 6f 72 74 20 44 57 4f 52 44 20 47 ) export DWORD G
3270: 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 41 28 etConsoleTitleA(
3280: 0d 0a 20 20 4c 50 53 54 52 20 6c 70 43 6f 6e 73 .. LPSTR lpCons
3290: 6f 6c 65 54 69 74 6c 65 2c 0d 0a 20 20 44 57 4f oleTitle,.. DWO
32a0: 52 44 20 6e 53 69 7a 65 29 3b 0d 0a 65 78 74 65 RD nSize);..exte
32b0: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
32c0: 72 74 20 44 57 4f 52 44 20 47 65 74 43 6f 6e 73 rt DWORD GetCons
32d0: 6f 6c 65 54 69 74 6c 65 57 28 0d 0a 20 20 4c 50 oleTitleW(.. LP
32e0: 57 53 54 52 20 6c 70 43 6f 6e 73 6f 6c 65 54 69 WSTR lpConsoleTi
32f0: 74 6c 65 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 53 tle,.. DWORD nS
3300: 69 7a 65 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 66 ize);..// #ifdef
3310: 20 55 4e 49 43 4f 44 45 0d 0a 2f 2f 20 23 2e 2e UNICODE..// #..
3320: 2e 0d 0a 2f 2f 20 23 65 6c 73 65 0d 0a 61 6c 69 ...// #else..ali
3330: 61 73 20 47 65 74 43 6f 6e 73 6f 6c 65 54 69 74 as GetConsoleTit
3340: 6c 65 41 20 47 65 74 43 6f 6e 73 6f 6c 65 54 69 leA GetConsoleTi
3350: 74 6c 65 3b 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 tle;..// #endif
3360: 2f 2f 20 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 // !UNICODE....e
3370: 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 xtern(Windows) e
3380: 78 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f xport BOOL SetCo
3390: 6e 73 6f 6c 65 54 69 74 6c 65 41 28 0d 0a 20 20 nsoleTitleA(..
33a0: 4c 50 43 53 54 52 20 6c 70 43 6f 6e 73 6f 6c 65 LPCSTR lpConsole
33b0: 54 69 74 6c 65 29 3b 0d 0a 65 78 74 65 72 6e 28 Title);..extern(
33c0: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
33d0: 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 54 BOOL SetConsoleT
33e0: 69 74 6c 65 57 28 0d 0a 20 20 4c 50 43 57 53 54 itleW(.. LPCWST
33f0: 52 20 6c 70 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 R lpConsoleTitle
3400: 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 66 20 55 4e );..// #ifdef UN
3410: 49 43 4f 44 45 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a ICODE..// #.....
3420: 2f 2f 20 23 65 6c 73 65 0d 0a 61 6c 69 61 73 20 // #else..alias
3430: 53 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 41 SetConsoleTitleA
3440: 20 53 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 SetConsoleTitle
3450: 3b 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 ;..// #endif //
3460: 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 !UNICODE....exte
3470: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
3480: 72 74 20 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 rt BOOL ReadCons
3490: 6f 6c 65 41 28 0d 0a 20 20 48 41 4e 44 4c 45 20 oleA(.. HANDLE
34a0: 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a hConsoleInput,..
34b0: 20 20 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65 LPVOID lpBuffe
34c0: 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4e 75 6d r,.. DWORD nNum
34d0: 62 65 72 4f 66 43 68 61 72 73 54 6f 52 65 61 64 berOfCharsToRead
34e0: 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e ,.. LPDWORD lpN
34f0: 75 6d 62 65 72 4f 66 43 68 61 72 73 52 65 61 64 umberOfCharsRead
3500: 2c 0d 0a 20 20 4c 50 56 4f 49 44 20 6c 70 52 65 ,.. LPVOID lpRe
3510: 73 65 72 76 65 64 29 3b 0d 0a 65 78 74 65 72 6e served);..extern
3520: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
3530: 20 42 4f 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c BOOL ReadConsol
3540: 65 57 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 eW(.. HANDLE hC
3550: 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 onsoleInput,..
3560: 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65 72 2c LPVOID lpBuffer,
3570: 0d 0a 20 20 44 57 4f 52 44 20 6e 4e 75 6d 62 65 .. DWORD nNumbe
3580: 72 4f 66 43 68 61 72 73 54 6f 52 65 61 64 2c 0d rOfCharsToRead,.
3590: 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d . LPDWORD lpNum
35a0: 62 65 72 4f 66 43 68 61 72 73 52 65 61 64 2c 0d berOfCharsRead,.
35b0: 0a 20 20 4c 50 56 4f 49 44 20 6c 70 52 65 73 65 . LPVOID lpRese
35c0: 72 76 65 64 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 rved);..// #ifde
35d0: 66 20 55 4e 49 43 4f 44 45 0d 0a 2f 2f 20 23 2e f UNICODE..// #.
35e0: 2e 2e 0d 0a 2f 2f 20 23 65 6c 73 65 0d 0a 61 6c ....// #else..al
35f0: 69 61 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 41 ias ReadConsoleA
3600: 20 52 65 61 64 43 6f 6e 73 6f 6c 65 3b 0d 0a 2f ReadConsole;../
3610: 2f 20 23 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 / #endif // !UNI
3620: 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 CODE....extern(W
3630: 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 indows) export B
3640: 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 OOL WriteConsole
3650: 41 28 0d 0a 20 20 48 41 4e 44 4c 45 20 68 43 6f A(.. HANDLE hCo
3660: 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 nsoleOutput,..
3670: 56 4f 49 44 20 2a 6c 70 42 75 66 66 65 72 2c 0d VOID *lpBuffer,.
3680: 0a 20 20 44 57 4f 52 44 20 6e 4e 75 6d 62 65 72 . DWORD nNumber
3690: 4f 66 43 68 61 72 73 54 6f 57 72 69 74 65 2c 0d OfCharsToWrite,.
36a0: 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d . LPDWORD lpNum
36b0: 62 65 72 4f 66 43 68 61 72 73 57 72 69 74 74 65 berOfCharsWritte
36c0: 6e 2c 0d 0a 20 20 4c 50 56 4f 49 44 20 6c 70 52 n,.. LPVOID lpR
36d0: 65 73 65 72 76 65 64 29 3b 0d 0a 65 78 74 65 72 eserved);..exter
36e0: 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 n(Windows) expor
36f0: 74 20 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 t BOOL WriteCons
3700: 6f 6c 65 57 28 0d 0a 20 20 48 41 4e 44 4c 45 20 oleW(.. HANDLE
3710: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
3720: 0a 20 20 56 4f 49 44 20 2a 6c 70 42 75 66 66 65 . VOID *lpBuffe
3730: 72 2c 0d 0a 20 20 44 57 4f 52 44 20 6e 4e 75 6d r,.. DWORD nNum
3740: 62 65 72 4f 66 43 68 61 72 73 54 6f 57 72 69 74 berOfCharsToWrit
3750: 65 2c 0d 0a 20 20 4c 50 44 57 4f 52 44 20 6c 70 e,.. LPDWORD lp
3760: 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 57 72 69 NumberOfCharsWri
3770: 74 74 65 6e 2c 0d 0a 20 20 4c 50 56 4f 49 44 20 tten,.. LPVOID
3780: 6c 70 52 65 73 65 72 76 65 64 29 3b 0d 0a 2f 2f lpReserved);..//
3790: 20 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d #ifdef UNICODE.
37a0: 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 6c .// #.....// #el
37b0: 73 65 0d 0a 61 6c 69 61 73 20 57 72 69 74 65 43 se..alias WriteC
37c0: 6f 6e 73 6f 6c 65 41 20 57 72 69 74 65 43 6f 6e onsoleA WriteCon
37d0: 73 6f 6c 65 3b 0d 0a 2f 2f 20 23 65 6e 64 69 66 sole;..// #endif
37e0: 20 2f 2f 20 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a // !UNICODE....
37f0: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f enum : uint { CO
3800: 4e 53 4f 4c 45 5f 54 45 58 54 4d 4f 44 45 5f 42 NSOLE_TEXTMODE_B
3810: 55 46 46 45 52 20 3d 20 31 20 7d 0d 0a 0d 0a 65 UFFER = 1 }....e
3820: 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 xtern(Windows) e
3830: 78 70 6f 72 74 20 48 41 4e 44 4c 45 20 43 72 65 xport HANDLE Cre
3840: 61 74 65 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e ateConsoleScreen
3850: 42 75 66 66 65 72 28 0d 0a 20 20 44 57 4f 52 44 Buffer(.. DWORD
3860: 20 64 77 44 65 73 69 72 65 64 41 63 63 65 73 73 dwDesiredAccess
3870: 2c 0d 0a 20 20 44 57 4f 52 44 20 64 77 53 68 61 ,.. DWORD dwSha
3880: 72 65 4d 6f 64 65 2c 0d 0a 20 20 53 45 43 55 52 reMode,.. SECUR
3890: 49 54 59 5f 41 54 54 52 49 42 55 54 45 53 20 2a ITY_ATTRIBUTES *
38a0: 6c 70 53 65 63 75 72 69 74 79 41 74 74 72 69 62 lpSecurityAttrib
38b0: 75 74 65 73 2c 0d 0a 20 20 44 57 4f 52 44 20 64 utes,.. DWORD d
38c0: 77 46 6c 61 67 73 2c 0d 0a 20 20 4c 50 56 4f 49 wFlags,.. LPVOI
38d0: 44 20 6c 70 53 63 72 65 65 6e 42 75 66 66 65 72 D lpScreenBuffer
38e0: 44 61 74 61 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e Data);....extern
38f0: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
3900: 20 55 49 4e 54 20 47 65 74 43 6f 6e 73 6f 6c 65 UINT GetConsole
3910: 43 50 28 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 CP();....extern(
3920: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
3930: 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 43 BOOL SetConsoleC
3940: 50 28 0d 0a 20 20 55 49 4e 54 20 77 43 6f 64 65 P(.. UINT wCode
3950: 50 61 67 65 49 44 29 3b 0d 0a 0d 0a 65 78 74 65 PageID);....exte
3960: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
3970: 72 74 20 55 49 4e 54 20 47 65 74 43 6f 6e 73 6f rt UINT GetConso
3980: 6c 65 4f 75 74 70 75 74 43 50 28 29 3b 0d 0a 0d leOutputCP();...
3990: 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 .extern(Windows)
39a0: 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 export BOOL Set
39b0: 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 50 28 ConsoleOutputCP(
39c0: 0d 0a 20 20 55 49 4e 54 20 77 43 6f 64 65 50 61 .. UINT wCodePa
39d0: 67 65 49 44 29 3b 0d 0a 0d 0a 2f 2f 20 23 69 66 geID);....// #if
39e0: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d (_WIN32_WINNT >=
39f0: 20 30 78 30 35 30 30 29 0d 0a 0d 0a 65 6e 75 6d 0x0500)....enum
3a00: 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4e 53 4f 4c : uint { CONSOL
3a10: 45 5f 46 55 4c 4c 53 43 52 45 45 4e 20 3d 20 31 E_FULLSCREEN = 1
3a20: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
3a30: 7b 20 43 4f 4e 53 4f 4c 45 5f 46 55 4c 4c 53 43 { CONSOLE_FULLSC
3a40: 52 45 45 4e 5f 48 41 52 44 57 41 52 45 20 3d 20 REEN_HARDWARE =
3a50: 32 20 7d 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 2 }....extern(Wi
3a60: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
3a70: 4f 4c 20 47 65 74 43 6f 6e 73 6f 6c 65 44 69 73 OL GetConsoleDis
3a80: 70 6c 61 79 4d 6f 64 65 28 0d 0a 20 20 4c 50 44 playMode(.. LPD
3a90: 57 4f 52 44 20 6c 70 4d 6f 64 65 46 6c 61 67 73 WORD lpModeFlags
3aa0: 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e );....extern(Win
3ab0: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 48 57 4e dows) export HWN
3ac0: 44 20 47 65 74 43 6f 6e 73 6f 6c 65 57 69 6e 64 D GetConsoleWind
3ad0: 6f 77 28 29 3b 0d 0a 0d 0a 2f 2f 20 23 65 6e 64 ow();....// #end
3ae0: 69 66 20 2f 2a 20 5f 57 49 4e 33 32 5f 57 49 4e if /* _WIN32_WIN
3af0: 4e 54 20 3e 3d 20 30 78 30 35 30 30 20 2a 2f 0d NT >= 0x0500 */.
3b00: 0a 0d 0a 2f 2f 20 23 69 66 28 5f 57 49 4e 33 32 ...// #if(_WIN32
3b10: 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 35 30 31 _WINNT >= 0x0501
3b20: 29 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 )....extern(Wind
3b30: 6f 77 73 29 20 65 78 70 6f 72 74 20 44 57 4f 52 ows) export DWOR
3b40: 44 20 47 65 74 43 6f 6e 73 6f 6c 65 50 72 6f 63 D GetConsoleProc
3b50: 65 73 73 4c 69 73 74 28 0d 0a 20 20 4c 50 44 57 essList(.. LPDW
3b60: 4f 52 44 20 6c 70 64 77 50 72 6f 63 65 73 73 4c ORD lpdwProcessL
3b70: 69 73 74 2c 0d 0a 20 20 44 57 4f 52 44 20 64 77 ist,.. DWORD dw
3b80: 50 72 6f 63 65 73 73 43 6f 75 6e 74 29 3b 0d 0a ProcessCount);..
3b90: 2f 2f 20 23 65 6e 64 69 66 20 2f 2a 20 5f 57 49 // #endif /* _WI
3ba0: 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 N32_WINNT >= 0x0
3bb0: 35 30 31 20 2a 2f 0d 0a 0d 0a 2f 2f 20 23 69 66 501 */....// #if
3bc0: 64 65 66 20 5f 5f 63 70 6c 75 73 70 6c 75 73 0d def __cplusplus.
3bd0: 0a 2f 2f 20 7d 0d 0a 2f 2f 20 23 65 6e 64 69 66 .// }..// #endif
3be0: 0d 0a 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f ....// #endif //
3bf0: 20 5f 57 49 4e 43 4f 4e 5f 0d 0a 0d 0a _WINCON_....