0000: 6d 6f 64 75 6c 65 20 77 69 6e 33 32 2e 77 69 6e module win32.win
0010: 63 6f 6e 3b 0d 0a 0d 0a 2f 2f 20 54 72 61 6e 73 con;....// Trans
0020: 6c 61 74 65 64 20 66 72 6f 6d 20 4d 69 63 72 6f lated from Micro
0030: 73 6f 66 74 20 50 6c 61 74 66 6f 72 6d 20 53 44 soft Platform SD
0040: 4b 20 41 75 67 75 73 74 20 32 30 30 31 20 45 64 K August 2001 Ed
0050: 69 74 69 6f 6e 0d 0a 2f 2f 20 62 79 20 59 2e 54 ition..// by Y.T
0060: 6f 6d 69 6e 6f 0d 0a 0d 0a 69 6d 70 6f 72 74 20 omino....import
0070: 77 69 6e 33 32 2e 77 69 6e 64 65 66 3b 0d 0a 69 win32.windef;..i
0080: 6d 70 6f 72 74 20 77 69 6e 33 32 2e 77 69 6e 62 mport win32.winb
0090: 61 73 65 3b 0d 0a 0d 0a 2f 2f 20 23 69 66 6e 64 ase;....// #ifnd
00a0: 65 66 20 5f 57 49 4e 43 4f 4e 5f 0d 0a 2f 2f 20 ef _WINCON_..//
00b0: 23 64 65 66 69 6e 65 20 5f 57 49 4e 43 4f 4e 5f #define _WINCON_
00c0: 0d 0a 0d 0a 2f 2f 20 23 69 66 64 65 66 20 5f 5f ....// #ifdef __
00d0: 63 70 6c 75 73 70 6c 75 73 0d 0a 2f 2f 20 65 78 cplusplus..// ex
00e0: 74 65 72 6e 20 22 43 22 20 7b 0d 0a 2f 2f 20 23 tern "C" {..// #
00f0: 65 6e 64 69 66 0d 0a 0d 0a 73 74 72 75 63 74 20 endif....struct
0100: 5f 43 4f 4f 52 44 20 7b 0d 0a 20 20 53 48 4f 52 _COORD {.. SHOR
0110: 54 20 58 3b 0d 0a 20 20 53 48 4f 52 54 20 59 3b T X;.. SHORT Y;
0120: 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 43 4f 4f 52 ..}..alias _COOR
0130: 44 20 43 4f 4f 52 44 3b 0d 0a 61 6c 69 61 73 20 D COORD;..alias
0140: 5f 43 4f 4f 52 44 2a 20 50 43 4f 4f 52 44 3b 0d _COORD* PCOORD;.
0150: 0a 0d 0a 73 74 72 75 63 74 20 5f 53 4d 41 4c 4c ...struct _SMALL
0160: 5f 52 45 43 54 20 7b 0d 0a 20 20 53 48 4f 52 54 _RECT {.. SHORT
0170: 20 4c 65 66 74 3b 0d 0a 20 20 53 48 4f 52 54 20 Left;.. SHORT
0180: 54 6f 70 3b 0d 0a 20 20 53 48 4f 52 54 20 52 69 Top;.. SHORT Ri
0190: 67 68 74 3b 0d 0a 20 20 53 48 4f 52 54 20 42 6f ght;.. SHORT Bo
01a0: 74 74 6f 6d 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 ttom;..}..alias
01b0: 5f 53 4d 41 4c 4c 5f 52 45 43 54 20 53 4d 41 4c _SMALL_RECT SMAL
01c0: 4c 5f 52 45 43 54 3b 0d 0a 61 6c 69 61 73 20 5f L_RECT;..alias _
01d0: 53 4d 41 4c 4c 5f 52 45 43 54 2a 20 50 53 4d 41 SMALL_RECT* PSMA
01e0: 4c 4c 5f 52 45 43 54 3b 0d 0a 0d 0a 73 74 72 75 LL_RECT;....stru
01f0: 63 74 20 5f 4b 45 59 5f 45 56 45 4e 54 5f 52 45 ct _KEY_EVENT_RE
0200: 43 4f 52 44 20 7b 0d 0a 20 20 42 4f 4f 4c 20 62 CORD {.. BOOL b
0210: 4b 65 79 44 6f 77 6e 3b 0d 0a 20 20 57 4f 52 44 KeyDown;.. WORD
0220: 20 77 52 65 70 65 61 74 43 6f 75 6e 74 3b 0d 0a wRepeatCount;..
0230: 20 20 57 4f 52 44 20 77 56 69 72 74 75 61 6c 4b WORD wVirtualK
0240: 65 79 43 6f 64 65 3b 0d 0a 20 20 57 4f 52 44 20 eyCode;.. WORD
0250: 77 56 69 72 74 75 61 6c 53 63 61 6e 43 6f 64 65 wVirtualScanCode
0260: 3b 0d 0a 75 6e 69 6f 6e 20 7b 0d 0a 20 20 57 43 ;..union {.. WC
0270: 48 41 52 20 55 6e 69 63 6f 64 65 43 68 61 72 3b HAR UnicodeChar;
0280: 0d 0a 20 20 43 48 41 52 20 41 73 63 69 69 43 68 .. CHAR AsciiCh
0290: 61 72 3b 0d 0a 7d 0d 0a 0d 0a 20 20 44 57 4f 52 ar;..}.... DWOR
02a0: 44 20 64 77 43 6f 6e 74 72 6f 6c 4b 65 79 53 74 D dwControlKeySt
02b0: 61 74 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f ate;..}..alias _
02c0: 4b 45 59 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 KEY_EVENT_RECORD
02d0: 20 4b 45 59 5f 45 56 45 4e 54 5f 52 45 43 4f 52 KEY_EVENT_RECOR
02e0: 44 3b 0d 0a 61 6c 69 61 73 20 5f 4b 45 59 5f 45 D;..alias _KEY_E
02f0: 56 45 4e 54 5f 52 45 43 4f 52 44 2a 20 50 4b 45 VENT_RECORD* PKE
0300: 59 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 3b 0d Y_EVENT_RECORD;.
0310: 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b ...enum : uint {
0320: 20 52 49 47 48 54 5f 41 4c 54 5f 50 52 45 53 53 RIGHT_ALT_PRESS
0330: 45 44 20 3d 20 30 78 30 30 30 31 20 7d 0d 0a 65 ED = 0x0001 }..e
0340: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4c 45 46 num : uint { LEF
0350: 54 5f 41 4c 54 5f 50 52 45 53 53 45 44 20 3d 20 T_ALT_PRESSED =
0360: 30 78 30 30 30 32 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0002 }..enum :
0370: 20 75 69 6e 74 20 7b 20 52 49 47 48 54 5f 43 54 uint { RIGHT_CT
0380: 52 4c 5f 50 52 45 53 53 45 44 20 3d 20 30 78 30 RL_PRESSED = 0x0
0390: 30 30 34 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 004 }..enum : ui
03a0: 6e 74 20 7b 20 4c 45 46 54 5f 43 54 52 4c 5f 50 nt { LEFT_CTRL_P
03b0: 52 45 53 53 45 44 20 3d 20 30 78 30 30 30 38 20 RESSED = 0x0008
03c0: 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b }..enum : uint {
03d0: 20 53 48 49 46 54 5f 50 52 45 53 53 45 44 20 3d SHIFT_PRESSED =
03e0: 20 30 78 30 30 31 30 20 7d 0d 0a 65 6e 75 6d 20 0x0010 }..enum
03f0: 3a 20 75 69 6e 74 20 7b 20 4e 55 4d 4c 4f 43 4b : uint { NUMLOCK
0400: 5f 4f 4e 20 3d 20 30 78 30 30 32 30 20 7d 0d 0a _ON = 0x0020 }..
0410: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 53 43 enum : uint { SC
0420: 52 4f 4c 4c 4c 4f 43 4b 5f 4f 4e 20 3d 20 30 78 ROLLLOCK_ON = 0x
0430: 30 30 34 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 0040 }..enum : u
0440: 69 6e 74 20 7b 20 43 41 50 53 4c 4f 43 4b 5f 4f int { CAPSLOCK_O
0450: 4e 20 3d 20 30 78 30 30 38 30 20 7d 0d 0a 65 6e N = 0x0080 }..en
0460: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 45 4e 48 41 um : uint { ENHA
0470: 4e 43 45 44 5f 4b 45 59 20 3d 20 30 78 30 31 30 NCED_KEY = 0x010
0480: 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 0 }..enum : uint
0490: 20 7b 20 4e 4c 53 5f 44 42 43 53 43 48 41 52 20 { NLS_DBCSCHAR
04a0: 3d 20 30 78 30 30 30 31 30 30 30 30 20 7d 0d 0a = 0x00010000 }..
04b0: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4e 4c enum : uint { NL
04c0: 53 5f 41 4c 50 48 41 4e 55 4d 45 52 49 43 20 3d S_ALPHANUMERIC =
04d0: 20 30 78 30 30 30 30 30 30 30 30 20 7d 0d 0a 65 0x00000000 }..e
04e0: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4e 4c 53 num : uint { NLS
04f0: 5f 4b 41 54 41 4b 41 4e 41 20 3d 20 30 78 30 30 _KATAKANA = 0x00
0500: 30 32 30 30 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 020000 }..enum :
0510: 20 75 69 6e 74 20 7b 20 4e 4c 53 5f 48 49 52 41 uint { NLS_HIRA
0520: 47 41 4e 41 20 3d 20 30 78 30 30 30 34 30 30 30 GANA = 0x0004000
0530: 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 0 }..enum : uint
0540: 20 7b 20 4e 4c 53 5f 52 4f 4d 41 4e 20 3d 20 30 { NLS_ROMAN = 0
0550: 78 30 30 34 30 30 30 30 30 20 7d 0d 0a 65 6e 75 x00400000 }..enu
0560: 6d 20 3a 20 75 69 6e 74 20 7b 20 4e 4c 53 5f 49 m : uint { NLS_I
0570: 4d 45 5f 43 4f 4e 56 45 52 53 49 4f 4e 20 3d 20 ME_CONVERSION =
0580: 30 78 30 30 38 30 30 30 30 30 20 7d 0d 0a 65 6e 0x00800000 }..en
0590: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4e 4c 53 5f um : uint { NLS_
05a0: 49 4d 45 5f 44 49 53 41 42 4c 45 20 3d 20 30 78 IME_DISABLE = 0x
05b0: 32 30 30 30 30 30 30 30 20 7d 0d 0a 0d 0a 73 74 20000000 }....st
05c0: 72 75 63 74 20 5f 4d 4f 55 53 45 5f 45 56 45 4e ruct _MOUSE_EVEN
05d0: 54 5f 52 45 43 4f 52 44 20 7b 0d 0a 20 20 43 4f T_RECORD {.. CO
05e0: 4f 52 44 20 64 77 4d 6f 75 73 65 50 6f 73 69 74 ORD dwMousePosit
05f0: 69 6f 6e 3b 0d 0a 20 20 44 57 4f 52 44 20 64 77 ion;.. DWORD dw
0600: 42 75 74 74 6f 6e 53 74 61 74 65 3b 0d 0a 20 20 ButtonState;..
0610: 44 57 4f 52 44 20 64 77 43 6f 6e 74 72 6f 6c 4b DWORD dwControlK
0620: 65 79 53 74 61 74 65 3b 0d 0a 20 20 44 57 4f 52 eyState;.. DWOR
0630: 44 20 64 77 45 76 65 6e 74 46 6c 61 67 73 3b 0d D dwEventFlags;.
0640: 0a 7d 0d 0a 61 6c 69 61 73 20 5f 4d 4f 55 53 45 .}..alias _MOUSE
0650: 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 4d 4f _EVENT_RECORD MO
0660: 55 53 45 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 USE_EVENT_RECORD
0670: 3b 0d 0a 61 6c 69 61 73 20 5f 4d 4f 55 53 45 5f ;..alias _MOUSE_
0680: 45 56 45 4e 54 5f 52 45 43 4f 52 44 2a 20 50 4d EVENT_RECORD* PM
0690: 4f 55 53 45 5f 45 56 45 4e 54 5f 52 45 43 4f 52 OUSE_EVENT_RECOR
06a0: 44 3b 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e D;....enum : uin
06b0: 74 20 7b 20 46 52 4f 4d 5f 4c 45 46 54 5f 31 53 t { FROM_LEFT_1S
06c0: 54 5f 42 55 54 54 4f 4e 5f 50 52 45 53 53 45 44 T_BUTTON_PRESSED
06d0: 20 3d 20 30 78 30 30 30 31 20 7d 0d 0a 65 6e 75 = 0x0001 }..enu
06e0: 6d 20 3a 20 75 69 6e 74 20 7b 20 52 49 47 48 54 m : uint { RIGHT
06f0: 4d 4f 53 54 5f 42 55 54 54 4f 4e 5f 50 52 45 53 MOST_BUTTON_PRES
0700: 53 45 44 20 3d 20 30 78 30 30 30 32 20 7d 0d 0a SED = 0x0002 }..
0710: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 46 52 enum : uint { FR
0720: 4f 4d 5f 4c 45 46 54 5f 32 4e 44 5f 42 55 54 54 OM_LEFT_2ND_BUTT
0730: 4f 4e 5f 50 52 45 53 53 45 44 20 3d 20 30 78 30 ON_PRESSED = 0x0
0740: 30 30 34 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 004 }..enum : ui
0750: 6e 74 20 7b 20 46 52 4f 4d 5f 4c 45 46 54 5f 33 nt { FROM_LEFT_3
0760: 52 44 5f 42 55 54 54 4f 4e 5f 50 52 45 53 53 45 RD_BUTTON_PRESSE
0770: 44 20 3d 20 30 78 30 30 30 38 20 7d 0d 0a 65 6e D = 0x0008 }..en
0780: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 46 52 4f 4d um : uint { FROM
0790: 5f 4c 45 46 54 5f 34 54 48 5f 42 55 54 54 4f 4e _LEFT_4TH_BUTTON
07a0: 5f 50 52 45 53 53 45 44 20 3d 20 30 78 30 30 31 _PRESSED = 0x001
07b0: 30 20 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 0 }....enum : ui
07c0: 6e 74 20 7b 20 4d 4f 55 53 45 5f 4d 4f 56 45 44 nt { MOUSE_MOVED
07d0: 20 3d 20 30 78 30 30 30 31 20 7d 0d 0a 65 6e 75 = 0x0001 }..enu
07e0: 6d 20 3a 20 75 69 6e 74 20 7b 20 44 4f 55 42 4c m : uint { DOUBL
07f0: 45 5f 43 4c 49 43 4b 20 3d 20 30 78 30 30 30 32 E_CLICK = 0x0002
0800: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0810: 7b 20 4d 4f 55 53 45 5f 57 48 45 45 4c 45 44 20 { MOUSE_WHEELED
0820: 3d 20 30 78 30 30 30 34 20 7d 0d 0a 0d 0a 73 74 = 0x0004 }....st
0830: 72 75 63 74 20 5f 57 49 4e 44 4f 57 5f 42 55 46 ruct _WINDOW_BUF
0840: 46 45 52 5f 53 49 5a 45 5f 52 45 43 4f 52 44 20 FER_SIZE_RECORD
0850: 7b 0d 0a 20 20 43 4f 4f 52 44 20 64 77 53 69 7a {.. COORD dwSiz
0860: 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 57 49 e;..}..alias _WI
0870: 4e 44 4f 57 5f 42 55 46 46 45 52 5f 53 49 5a 45 NDOW_BUFFER_SIZE
0880: 5f 52 45 43 4f 52 44 20 57 49 4e 44 4f 57 5f 42 _RECORD WINDOW_B
0890: 55 46 46 45 52 5f 53 49 5a 45 5f 52 45 43 4f 52 UFFER_SIZE_RECOR
08a0: 44 3b 0d 0a 61 6c 69 61 73 20 5f 57 49 4e 44 4f D;..alias _WINDO
08b0: 57 5f 42 55 46 46 45 52 5f 53 49 5a 45 5f 52 45 W_BUFFER_SIZE_RE
08c0: 43 4f 52 44 2a 20 50 57 49 4e 44 4f 57 5f 42 55 CORD* PWINDOW_BU
08d0: 46 46 45 52 5f 53 49 5a 45 5f 52 45 43 4f 52 44 FFER_SIZE_RECORD
08e0: 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 4d 45 4e ;....struct _MEN
08f0: 55 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 20 7b U_EVENT_RECORD {
0900: 0d 0a 20 20 55 49 4e 54 20 64 77 43 6f 6d 6d 61 .. UINT dwComma
0910: 6e 64 49 64 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 ndId;..}..alias
0920: 5f 4d 45 4e 55 5f 45 56 45 4e 54 5f 52 45 43 4f _MENU_EVENT_RECO
0930: 52 44 20 4d 45 4e 55 5f 45 56 45 4e 54 5f 52 45 RD MENU_EVENT_RE
0940: 43 4f 52 44 3b 0d 0a 61 6c 69 61 73 20 5f 4d 45 CORD;..alias _ME
0950: 4e 55 5f 45 56 45 4e 54 5f 52 45 43 4f 52 44 2a NU_EVENT_RECORD*
0960: 20 50 4d 45 4e 55 5f 45 56 45 4e 54 5f 52 45 43 PMENU_EVENT_REC
0970: 4f 52 44 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f ORD;....struct _
0980: 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 45 43 4f FOCUS_EVENT_RECO
0990: 52 44 20 7b 0d 0a 20 20 42 4f 4f 4c 20 62 53 65 RD {.. BOOL bSe
09a0: 74 46 6f 63 75 73 3b 0d 0a 7d 0d 0a 61 6c 69 61 tFocus;..}..alia
09b0: 73 20 5f 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 s _FOCUS_EVENT_R
09c0: 45 43 4f 52 44 20 46 4f 43 55 53 5f 45 56 45 4e ECORD FOCUS_EVEN
09d0: 54 5f 52 45 43 4f 52 44 3b 0d 0a 61 6c 69 61 73 T_RECORD;..alias
09e0: 20 5f 46 4f 43 55 53 5f 45 56 45 4e 54 5f 52 45 _FOCUS_EVENT_RE
09f0: 43 4f 52 44 2a 20 50 46 4f 43 55 53 5f 45 56 45 CORD* PFOCUS_EVE
0a00: 4e 54 5f 52 45 43 4f 52 44 3b 0d 0a 0d 0a 73 74 NT_RECORD;....st
0a10: 72 75 63 74 20 5f 49 4e 50 55 54 5f 52 45 43 4f ruct _INPUT_RECO
0a20: 52 44 20 7b 0d 0a 20 20 57 4f 52 44 20 45 76 65 RD {.. WORD Eve
0a30: 6e 74 54 79 70 65 3b 0d 0a 75 6e 69 6f 6e 20 7b ntType;..union {
0a40: 0d 0a 20 20 4b 45 59 5f 45 56 45 4e 54 5f 52 45 .. KEY_EVENT_RE
0a50: 43 4f 52 44 20 4b 65 79 45 76 65 6e 74 3b 0d 0a CORD KeyEvent;..
0a60: 20 20 4d 4f 55 53 45 5f 45 56 45 4e 54 5f 52 45 MOUSE_EVENT_RE
0a70: 43 4f 52 44 20 4d 6f 75 73 65 45 76 65 6e 74 3b CORD MouseEvent;
0a80: 0d 0a 20 20 57 49 4e 44 4f 57 5f 42 55 46 46 45 .. WINDOW_BUFFE
0a90: 52 5f 53 49 5a 45 5f 52 45 43 4f 52 44 20 57 69 R_SIZE_RECORD Wi
0aa0: 6e 64 6f 77 42 75 66 66 65 72 53 69 7a 65 45 76 ndowBufferSizeEv
0ab0: 65 6e 74 3b 0d 0a 20 20 4d 45 4e 55 5f 45 56 45 ent;.. MENU_EVE
0ac0: 4e 54 5f 52 45 43 4f 52 44 20 4d 65 6e 75 45 76 NT_RECORD MenuEv
0ad0: 65 6e 74 3b 0d 0a 20 20 46 4f 43 55 53 5f 45 56 ent;.. FOCUS_EV
0ae0: 45 4e 54 5f 52 45 43 4f 52 44 20 46 6f 63 75 73 ENT_RECORD Focus
0af0: 45 76 65 6e 74 3b 0d 0a 7d 0d 0a 0d 0a 7d 0d 0a Event;..}....}..
0b00: 61 6c 69 61 73 20 5f 49 4e 50 55 54 5f 52 45 43 alias _INPUT_REC
0b10: 4f 52 44 20 49 4e 50 55 54 5f 52 45 43 4f 52 44 ORD INPUT_RECORD
0b20: 3b 0d 0a 61 6c 69 61 73 20 5f 49 4e 50 55 54 5f ;..alias _INPUT_
0b30: 52 45 43 4f 52 44 2a 20 50 49 4e 50 55 54 5f 52 RECORD* PINPUT_R
0b40: 45 43 4f 52 44 3b 0d 0a 0d 0a 65 6e 75 6d 20 3a ECORD;....enum :
0b50: 20 75 69 6e 74 20 7b 20 4b 45 59 5f 45 56 45 4e uint { KEY_EVEN
0b60: 54 20 3d 20 30 78 30 30 30 31 20 7d 0d 0a 65 6e T = 0x0001 }..en
0b70: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 4d 4f 55 53 um : uint { MOUS
0b80: 45 5f 45 56 45 4e 54 20 3d 20 30 78 30 30 30 32 E_EVENT = 0x0002
0b90: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0ba0: 7b 20 57 49 4e 44 4f 57 5f 42 55 46 46 45 52 5f { WINDOW_BUFFER_
0bb0: 53 49 5a 45 5f 45 56 45 4e 54 20 3d 20 30 78 30 SIZE_EVENT = 0x0
0bc0: 30 30 34 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 004 }..enum : ui
0bd0: 6e 74 20 7b 20 4d 45 4e 55 5f 45 56 45 4e 54 20 nt { MENU_EVENT
0be0: 3d 20 30 78 30 30 30 38 20 7d 0d 0a 65 6e 75 6d = 0x0008 }..enum
0bf0: 20 3a 20 75 69 6e 74 20 7b 20 46 4f 43 55 53 5f : uint { FOCUS_
0c00: 45 56 45 4e 54 20 3d 20 30 78 30 30 31 30 20 7d EVENT = 0x0010 }
0c10: 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 43 48 41 52 ....struct _CHAR
0c20: 5f 49 4e 46 4f 20 7b 0d 0a 75 6e 69 6f 6e 20 7b _INFO {..union {
0c30: 0d 0a 20 20 57 43 48 41 52 20 55 6e 69 63 6f 64 .. WCHAR Unicod
0c40: 65 43 68 61 72 3b 0d 0a 20 20 43 48 41 52 20 41 eChar;.. CHAR A
0c50: 73 63 69 69 43 68 61 72 3b 0d 0a 7d 0d 0a 0d 0a sciiChar;..}....
0c60: 20 20 57 4f 52 44 20 41 74 74 72 69 62 75 74 65 WORD Attribute
0c70: 73 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 43 48 s;..}..alias _CH
0c80: 41 52 5f 49 4e 46 4f 20 43 48 41 52 5f 49 4e 46 AR_INFO CHAR_INF
0c90: 4f 3b 0d 0a 61 6c 69 61 73 20 5f 43 48 41 52 5f O;..alias _CHAR_
0ca0: 49 4e 46 4f 2a 20 50 43 48 41 52 5f 49 4e 46 4f INFO* PCHAR_INFO
0cb0: 3b 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 ;....enum : uint
0cc0: 20 7b 20 46 4f 52 45 47 52 4f 55 4e 44 5f 42 4c { FOREGROUND_BL
0cd0: 55 45 20 3d 20 30 78 30 30 30 31 20 7d 0d 0a 65 UE = 0x0001 }..e
0ce0: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 46 4f 52 num : uint { FOR
0cf0: 45 47 52 4f 55 4e 44 5f 47 52 45 45 4e 20 3d 20 EGROUND_GREEN =
0d00: 30 78 30 30 30 32 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0002 }..enum :
0d10: 20 75 69 6e 74 20 7b 20 46 4f 52 45 47 52 4f 55 uint { FOREGROU
0d20: 4e 44 5f 52 45 44 20 3d 20 30 78 30 30 30 34 20 ND_RED = 0x0004
0d30: 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b }..enum : uint {
0d40: 20 46 4f 52 45 47 52 4f 55 4e 44 5f 49 4e 54 45 FOREGROUND_INTE
0d50: 4e 53 49 54 59 20 3d 20 30 78 30 30 30 38 20 7d NSITY = 0x0008 }
0d60: 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 ..enum : uint {
0d70: 42 41 43 4b 47 52 4f 55 4e 44 5f 42 4c 55 45 20 BACKGROUND_BLUE
0d80: 3d 20 30 78 30 30 31 30 20 7d 0d 0a 65 6e 75 6d = 0x0010 }..enum
0d90: 20 3a 20 75 69 6e 74 20 7b 20 42 41 43 4b 47 52 : uint { BACKGR
0da0: 4f 55 4e 44 5f 47 52 45 45 4e 20 3d 20 30 78 30 OUND_GREEN = 0x0
0db0: 30 32 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 020 }..enum : ui
0dc0: 6e 74 20 7b 20 42 41 43 4b 47 52 4f 55 4e 44 5f nt { BACKGROUND_
0dd0: 52 45 44 20 3d 20 30 78 30 30 34 30 20 7d 0d 0a RED = 0x0040 }..
0de0: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 42 41 enum : uint { BA
0df0: 43 4b 47 52 4f 55 4e 44 5f 49 4e 54 45 4e 53 49 CKGROUND_INTENSI
0e00: 54 59 20 3d 20 30 78 30 30 38 30 20 7d 0d 0a 65 TY = 0x0080 }..e
0e10: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4d num : uint { COM
0e20: 4d 4f 4e 5f 4c 56 42 5f 4c 45 41 44 49 4e 47 5f MON_LVB_LEADING_
0e30: 42 59 54 45 20 3d 20 30 78 30 31 30 30 20 7d 0d BYTE = 0x0100 }.
0e40: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 .enum : uint { C
0e50: 4f 4d 4d 4f 4e 5f 4c 56 42 5f 54 52 41 49 4c 49 OMMON_LVB_TRAILI
0e60: 4e 47 5f 42 59 54 45 20 3d 20 30 78 30 32 30 30 NG_BYTE = 0x0200
0e70: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0e80: 7b 20 43 4f 4d 4d 4f 4e 5f 4c 56 42 5f 47 52 49 { COMMON_LVB_GRI
0e90: 44 5f 48 4f 52 49 5a 4f 4e 54 41 4c 20 3d 20 30 D_HORIZONTAL = 0
0ea0: 78 30 34 30 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 x0400 }..enum :
0eb0: 75 69 6e 74 20 7b 20 43 4f 4d 4d 4f 4e 5f 4c 56 uint { COMMON_LV
0ec0: 42 5f 47 52 49 44 5f 4c 56 45 52 54 49 43 41 4c B_GRID_LVERTICAL
0ed0: 20 3d 20 30 78 30 38 30 30 20 7d 0d 0a 65 6e 75 = 0x0800 }..enu
0ee0: 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4d 4d 4f m : uint { COMMO
0ef0: 4e 5f 4c 56 42 5f 47 52 49 44 5f 52 56 45 52 54 N_LVB_GRID_RVERT
0f00: 49 43 41 4c 20 3d 20 30 78 31 30 30 30 20 7d 0d ICAL = 0x1000 }.
0f10: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 .enum : uint { C
0f20: 4f 4d 4d 4f 4e 5f 4c 56 42 5f 52 45 56 45 52 53 OMMON_LVB_REVERS
0f30: 45 5f 56 49 44 45 4f 20 3d 20 30 78 34 30 30 30 E_VIDEO = 0x4000
0f40: 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 }..enum : uint
0f50: 7b 20 43 4f 4d 4d 4f 4e 5f 4c 56 42 5f 55 4e 44 { COMMON_LVB_UND
0f60: 45 52 53 43 4f 52 45 20 3d 20 30 78 38 30 30 30 ERSCORE = 0x8000
0f70: 20 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e }....enum : uin
0f80: 74 20 7b 20 43 4f 4d 4d 4f 4e 5f 4c 56 42 5f 53 t { COMMON_LVB_S
0f90: 42 43 53 44 42 43 53 20 3d 20 30 78 30 33 30 30 BCSDBCS = 0x0300
0fa0: 20 7d 0d 0a 0d 0a 73 74 72 75 63 74 20 5f 43 4f }....struct _CO
0fb0: 4e 53 4f 4c 45 5f 53 43 52 45 45 4e 5f 42 55 46 NSOLE_SCREEN_BUF
0fc0: 46 45 52 5f 49 4e 46 4f 20 7b 0d 0a 20 20 43 4f FER_INFO {.. CO
0fd0: 4f 52 44 20 64 77 53 69 7a 65 3b 0d 0a 20 20 43 ORD dwSize;.. C
0fe0: 4f 4f 52 44 20 64 77 43 75 72 73 6f 72 50 6f 73 OORD dwCursorPos
0ff0: 69 74 69 6f 6e 3b 0d 0a 20 20 57 4f 52 44 20 77 ition;.. WORD w
1000: 41 74 74 72 69 62 75 74 65 73 3b 0d 0a 20 20 53 Attributes;.. S
1010: 4d 41 4c 4c 5f 52 45 43 54 20 73 72 57 69 6e 64 MALL_RECT srWind
1020: 6f 77 3b 0d 0a 20 20 43 4f 4f 52 44 20 64 77 4d ow;.. COORD dwM
1030: 61 78 69 6d 75 6d 57 69 6e 64 6f 77 53 69 7a 65 aximumWindowSize
1040: 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 43 4f 4e ;..}..alias _CON
1050: 53 4f 4c 45 5f 53 43 52 45 45 4e 5f 42 55 46 46 SOLE_SCREEN_BUFF
1060: 45 52 5f 49 4e 46 4f 20 43 4f 4e 53 4f 4c 45 5f ER_INFO CONSOLE_
1070: 53 43 52 45 45 4e 5f 42 55 46 46 45 52 5f 49 4e SCREEN_BUFFER_IN
1080: 46 4f 3b 0d 0a 61 6c 69 61 73 20 5f 43 4f 4e 53 FO;..alias _CONS
1090: 4f 4c 45 5f 53 43 52 45 45 4e 5f 42 55 46 46 45 OLE_SCREEN_BUFFE
10a0: 52 5f 49 4e 46 4f 2a 20 50 43 4f 4e 53 4f 4c 45 R_INFO* PCONSOLE
10b0: 5f 53 43 52 45 45 4e 5f 42 55 46 46 45 52 5f 49 _SCREEN_BUFFER_I
10c0: 4e 46 4f 3b 0d 0a 0d 0a 73 74 72 75 63 74 20 5f NFO;....struct _
10d0: 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 5f 49 CONSOLE_CURSOR_I
10e0: 4e 46 4f 20 7b 0d 0a 20 20 44 57 4f 52 44 20 64 NFO {.. DWORD d
10f0: 77 53 69 7a 65 3b 0d 0a 20 20 42 4f 4f 4c 20 62 wSize;.. BOOL b
1100: 56 69 73 69 62 6c 65 3b 0d 0a 7d 0d 0a 61 6c 69 Visible;..}..ali
1110: 61 73 20 5f 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 as _CONSOLE_CURS
1120: 4f 52 5f 49 4e 46 4f 20 43 4f 4e 53 4f 4c 45 5f OR_INFO CONSOLE_
1130: 43 55 52 53 4f 52 5f 49 4e 46 4f 3b 0d 0a 61 6c CURSOR_INFO;..al
1140: 69 61 73 20 5f 43 4f 4e 53 4f 4c 45 5f 43 55 52 ias _CONSOLE_CUR
1150: 53 4f 52 5f 49 4e 46 4f 2a 20 50 43 4f 4e 53 4f SOR_INFO* PCONSO
1160: 4c 45 5f 43 55 52 53 4f 52 5f 49 4e 46 4f 3b 0d LE_CURSOR_INFO;.
1170: 0a 0d 0a 73 74 72 75 63 74 20 5f 43 4f 4e 53 4f ...struct _CONSO
1180: 4c 45 5f 46 4f 4e 54 5f 49 4e 46 4f 20 7b 0d 0a LE_FONT_INFO {..
1190: 20 20 44 57 4f 52 44 20 6e 46 6f 6e 74 3b 0d 0a DWORD nFont;..
11a0: 20 20 43 4f 4f 52 44 20 64 77 46 6f 6e 74 53 69 COORD dwFontSi
11b0: 7a 65 3b 0d 0a 7d 0d 0a 61 6c 69 61 73 20 5f 43 ze;..}..alias _C
11c0: 4f 4e 53 4f 4c 45 5f 46 4f 4e 54 5f 49 4e 46 4f ONSOLE_FONT_INFO
11d0: 20 43 4f 4e 53 4f 4c 45 5f 46 4f 4e 54 5f 49 4e CONSOLE_FONT_IN
11e0: 46 4f 3b 0d 0a 61 6c 69 61 73 20 5f 43 4f 4e 53 FO;..alias _CONS
11f0: 4f 4c 45 5f 46 4f 4e 54 5f 49 4e 46 4f 2a 20 50 OLE_FONT_INFO* P
1200: 43 4f 4e 53 4f 4c 45 5f 46 4f 4e 54 5f 49 4e 46 CONSOLE_FONT_INF
1210: 4f 3b 0d 0a 0d 0a 2f 2f 20 23 69 66 28 5f 57 49 O;....// #if(_WI
1220: 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 N32_WINNT >= 0x0
1230: 35 30 30 29 0d 0a 73 74 72 75 63 74 20 5f 43 4f 500)..struct _CO
1240: 4e 53 4f 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f NSOLE_SELECTION_
1250: 49 4e 46 4f 20 7b 0d 0a 20 20 44 57 4f 52 44 20 INFO {.. DWORD
1260: 64 77 46 6c 61 67 73 3b 0d 0a 20 20 43 4f 4f 52 dwFlags;.. COOR
1270: 44 20 64 77 53 65 6c 65 63 74 69 6f 6e 41 6e 63 D dwSelectionAnc
1280: 68 6f 72 3b 0d 0a 20 20 53 4d 41 4c 4c 5f 52 45 hor;.. SMALL_RE
1290: 43 54 20 73 72 53 65 6c 65 63 74 69 6f 6e 3b 0d CT srSelection;.
12a0: 0a 7d 0d 0a 61 6c 69 61 73 20 5f 43 4f 4e 53 4f .}..alias _CONSO
12b0: 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f 49 4e 46 LE_SELECTION_INF
12c0: 4f 20 43 4f 4e 53 4f 4c 45 5f 53 45 4c 45 43 54 O CONSOLE_SELECT
12d0: 49 4f 4e 5f 49 4e 46 4f 3b 0d 0a 61 6c 69 61 73 ION_INFO;..alias
12e0: 20 5f 43 4f 4e 53 4f 4c 45 5f 53 45 4c 45 43 54 _CONSOLE_SELECT
12f0: 49 4f 4e 5f 49 4e 46 4f 2a 20 50 43 4f 4e 53 4f ION_INFO* PCONSO
1300: 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f 49 4e 46 LE_SELECTION_INF
1310: 4f 3b 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e O;....enum : uin
1320: 74 20 7b 20 43 4f 4e 53 4f 4c 45 5f 4e 4f 5f 53 t { CONSOLE_NO_S
1330: 45 4c 45 43 54 49 4f 4e 20 3d 20 30 78 30 30 30 ELECTION = 0x000
1340: 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 0 }..enum : uint
1350: 20 7b 20 43 4f 4e 53 4f 4c 45 5f 53 45 4c 45 43 { CONSOLE_SELEC
1360: 54 49 4f 4e 5f 49 4e 5f 50 52 4f 47 52 45 53 53 TION_IN_PROGRESS
1370: 20 3d 20 30 78 30 30 30 31 20 7d 0d 0a 65 6e 75 = 0x0001 }..enu
1380: 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4e 53 4f m : uint { CONSO
1390: 4c 45 5f 53 45 4c 45 43 54 49 4f 4e 5f 4e 4f 54 LE_SELECTION_NOT
13a0: 5f 45 4d 50 54 59 20 3d 20 30 78 30 30 30 32 20 _EMPTY = 0x0002
13b0: 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b }..enum : uint {
13c0: 20 43 4f 4e 53 4f 4c 45 5f 4d 4f 55 53 45 5f 53 CONSOLE_MOUSE_S
13d0: 45 4c 45 43 54 49 4f 4e 20 3d 20 30 78 30 30 30 ELECTION = 0x000
13e0: 34 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 4 }..enum : uint
13f0: 20 7b 20 43 4f 4e 53 4f 4c 45 5f 4d 4f 55 53 45 { CONSOLE_MOUSE
1400: 5f 44 4f 57 4e 20 3d 20 30 78 30 30 30 38 20 7d _DOWN = 0x0008 }
1410: 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2a 20 5f ..// #endif /* _
1420: 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 WIN32_WINNT >= 0
1430: 78 30 35 30 30 20 2a 2f 0d 0a 0d 0a 65 78 74 65 x0500 */....exte
1440: 72 6e 28 57 69 6e 64 6f 77 73 29 20 61 6c 69 61 rn(Windows) alia
1450: 73 20 42 4f 4f 4c 20 66 75 6e 63 74 69 6f 6e 28 s BOOL function(
1460: 20 44 57 4f 52 44 20 43 74 72 6c 54 79 70 65 20 DWORD CtrlType
1470: 29 20 50 48 41 4e 44 4c 45 52 5f 52 4f 55 54 49 ) PHANDLER_ROUTI
1480: 4e 45 3b 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 NE;....enum : ui
1490: 6e 74 20 7b 20 43 54 52 4c 5f 43 5f 45 56 45 4e nt { CTRL_C_EVEN
14a0: 54 20 3d 20 30 20 7d 0d 0a 65 6e 75 6d 20 3a 20 T = 0 }..enum :
14b0: 75 69 6e 74 20 7b 20 43 54 52 4c 5f 42 52 45 41 uint { CTRL_BREA
14c0: 4b 5f 45 56 45 4e 54 20 3d 20 31 20 7d 0d 0a 65 K_EVENT = 1 }..e
14d0: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 54 52 num : uint { CTR
14e0: 4c 5f 43 4c 4f 53 45 5f 45 56 45 4e 54 20 3d 20 L_CLOSE_EVENT =
14f0: 32 20 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 75 69 2 }....enum : ui
1500: 6e 74 20 7b 20 43 54 52 4c 5f 4c 4f 47 4f 46 46 nt { CTRL_LOGOFF
1510: 5f 45 56 45 4e 54 20 3d 20 35 20 7d 0d 0a 65 6e _EVENT = 5 }..en
1520: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 54 52 4c um : uint { CTRL
1530: 5f 53 48 55 54 44 4f 57 4e 5f 45 56 45 4e 54 20 _SHUTDOWN_EVENT
1540: 3d 20 36 20 7d 0d 0a 0d 0a 65 6e 75 6d 20 3a 20 = 6 }....enum :
1550: 75 69 6e 74 20 7b 20 45 4e 41 42 4c 45 5f 50 52 uint { ENABLE_PR
1560: 4f 43 45 53 53 45 44 5f 49 4e 50 55 54 20 3d 20 OCESSED_INPUT =
1570: 30 78 30 30 30 31 20 7d 0d 0a 65 6e 75 6d 20 3a 0x0001 }..enum :
1580: 20 75 69 6e 74 20 7b 20 45 4e 41 42 4c 45 5f 4c uint { ENABLE_L
1590: 49 4e 45 5f 49 4e 50 55 54 20 3d 20 30 78 30 30 INE_INPUT = 0x00
15a0: 30 32 20 7d 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 02 }..enum : uin
15b0: 74 20 7b 20 45 4e 41 42 4c 45 5f 45 43 48 4f 5f t { ENABLE_ECHO_
15c0: 49 4e 50 55 54 20 3d 20 30 78 30 30 30 34 20 7d INPUT = 0x0004 }
15d0: 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 ..enum : uint {
15e0: 45 4e 41 42 4c 45 5f 57 49 4e 44 4f 57 5f 49 4e ENABLE_WINDOW_IN
15f0: 50 55 54 20 3d 20 30 78 30 30 30 38 20 7d 0d 0a PUT = 0x0008 }..
1600: 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 45 4e enum : uint { EN
1610: 41 42 4c 45 5f 4d 4f 55 53 45 5f 49 4e 50 55 54 ABLE_MOUSE_INPUT
1620: 20 3d 20 30 78 30 30 31 30 20 7d 0d 0a 0d 0a 65 = 0x0010 }....e
1630: 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 45 4e 41 num : uint { ENA
1640: 42 4c 45 5f 50 52 4f 43 45 53 53 45 44 5f 4f 55 BLE_PROCESSED_OU
1650: 54 50 55 54 20 3d 20 30 78 30 30 30 31 20 7d 0d TPUT = 0x0001 }.
1660: 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 45 .enum : uint { E
1670: 4e 41 42 4c 45 5f 57 52 41 50 5f 41 54 5f 45 4f NABLE_WRAP_AT_EO
1680: 4c 5f 4f 55 54 50 55 54 20 3d 20 30 78 30 30 30 L_OUTPUT = 0x000
1690: 32 20 7d 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 2 }....extern(Wi
16a0: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
16b0: 4f 4c 20 50 65 65 6b 43 6f 6e 73 6f 6c 65 49 6e OL PeekConsoleIn
16c0: 70 75 74 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 putA(.. HAND
16d0: 4c 45 20 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 LE hConsoleInput
16e0: 2c 0d 0a 20 20 20 20 20 50 49 4e 50 55 54 5f 52 ,.. PINPUT_R
16f0: 45 43 4f 52 44 20 6c 70 42 75 66 66 65 72 2c 0d ECORD lpBuffer,.
1700: 0a 20 20 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e . DWORD nLen
1710: 67 74 68 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f gth,.. LPDWO
1720: 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 RD lpNumberOfEve
1730: 6e 74 73 52 65 61 64 0d 0a 20 20 20 20 29 3b 0d ntsRead.. );.
1740: 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 .extern(Windows)
1750: 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 50 65 65 export BOOL Pee
1760: 6b 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 28 0d kConsoleInputW(.
1770: 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f . HANDLE hCo
1780: 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 20 nsoleInput,..
1790: 20 20 50 49 4e 50 55 54 5f 52 45 43 4f 52 44 20 PINPUT_RECORD
17a0: 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 20 20 20 lpBuffer,..
17b0: 44 57 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a DWORD nLength,..
17c0: 20 20 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e LPDWORD lpN
17d0: 75 6d 62 65 72 4f 66 45 76 65 6e 74 73 52 65 61 umberOfEventsRea
17e0: 64 0d 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 d.. );..// #i
17f0: 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a 61 6c fdef UNICODE..al
1800: 69 61 73 20 50 65 65 6b 43 6f 6e 73 6f 6c 65 49 ias PeekConsoleI
1810: 6e 70 75 74 57 20 50 65 65 6b 43 6f 6e 73 6f 6c nputW PeekConsol
1820: 65 49 6e 70 75 74 3b 0d 0a 2f 2f 20 23 65 6c 73 eInput;..// #els
1830: 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 e..// #.....// #
1840: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
1850: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
1860: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
1870: 20 52 65 61 64 43 6f 6e 73 6f 6c 65 49 6e 70 75 ReadConsoleInpu
1880: 74 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 tA(.. HANDLE
1890: 20 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d hConsoleInput,.
18a0: 0a 20 20 20 20 20 50 49 4e 50 55 54 5f 52 45 43 . PINPUT_REC
18b0: 4f 52 44 20 6c 70 42 75 66 66 65 72 2c 0d 0a 20 ORD lpBuffer,..
18c0: 20 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e 67 74 DWORD nLengt
18d0: 68 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 h,.. LPDWORD
18e0: 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 6e 74 lpNumberOfEvent
18f0: 73 52 65 61 64 0d 0a 20 20 20 20 29 3b 0d 0a 65 sRead.. );..e
1900: 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 xtern(Windows) e
1910: 78 70 6f 72 74 20 42 4f 4f 4c 20 52 65 61 64 43 xport BOOL ReadC
1920: 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 28 0d 0a 20 onsoleInputW(..
1930: 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 HANDLE hCons
1940: 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 20 20 20 oleInput,..
1950: 50 49 4e 50 55 54 5f 52 45 43 4f 52 44 20 6c 70 PINPUT_RECORD lp
1960: 42 75 66 66 65 72 2c 0d 0a 20 20 20 20 20 44 57 Buffer,.. DW
1970: 4f 52 44 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 20 ORD nLength,..
1980: 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d LPDWORD lpNum
1990: 62 65 72 4f 66 45 76 65 6e 74 73 52 65 61 64 0d berOfEventsRead.
19a0: 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 66 64 . );..// #ifd
19b0: 65 66 20 55 4e 49 43 4f 44 45 0d 0a 61 6c 69 61 ef UNICODE..alia
19c0: 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 49 6e 70 s ReadConsoleInp
19d0: 75 74 57 20 52 65 61 64 43 6f 6e 73 6f 6c 65 49 utW ReadConsoleI
19e0: 6e 70 75 74 3b 0d 0a 2f 2f 20 23 65 6c 73 65 0d nput;..// #else.
19f0: 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 6e .// #.....// #en
1a00: 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 45 0d dif // !UNICODE.
1a10: 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 ...extern(Window
1a20: 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 57 s) export BOOL W
1a30: 72 69 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 riteConsoleInput
1a40: 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 A(.. HANDLE
1a50: 68 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a hConsoleInput,..
1a60: 20 20 20 20 20 20 49 4e 50 55 54 5f 52 45 43 4f INPUT_RECO
1a70: 52 44 20 2a 6c 70 42 75 66 66 65 72 2c 0d 0a 20 RD *lpBuffer,..
1a80: 20 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e 67 74 DWORD nLengt
1a90: 68 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 h,.. LPDWORD
1aa0: 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 6e 74 lpNumberOfEvent
1ab0: 73 57 72 69 74 74 65 6e 0d 0a 20 20 20 20 29 3b sWritten.. );
1ac0: 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 ..extern(Windows
1ad0: 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 57 72 ) export BOOL Wr
1ae0: 69 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 iteConsoleInputW
1af0: 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 68 (.. HANDLE h
1b00: 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 ConsoleInput,..
1b10: 20 20 20 20 20 49 4e 50 55 54 5f 52 45 43 4f 52 INPUT_RECOR
1b20: 44 20 2a 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 D *lpBuffer,..
1b30: 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e 67 74 68 DWORD nLength
1b40: 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 20 ,.. LPDWORD
1b50: 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 6e 74 73 lpNumberOfEvents
1b60: 57 72 69 74 74 65 6e 0d 0a 20 20 20 20 29 3b 0d Written.. );.
1b70: 0a 2f 2f 20 23 69 66 64 65 66 20 55 4e 49 43 4f .// #ifdef UNICO
1b80: 44 45 0d 0a 61 6c 69 61 73 20 57 72 69 74 65 43 DE..alias WriteC
1b90: 6f 6e 73 6f 6c 65 49 6e 70 75 74 57 20 57 72 69 onsoleInputW Wri
1ba0: 74 65 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 3b 0d teConsoleInput;.
1bb0: 0a 2f 2f 20 23 65 6c 73 65 0d 0a 2f 2f 20 23 2e .// #else..// #.
1bc0: 2e 2e 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f ....// #endif //
1bd0: 20 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 !UNICODE....ext
1be0: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
1bf0: 6f 72 74 20 42 4f 4f 4c 20 52 65 61 64 43 6f 6e ort BOOL ReadCon
1c00: 73 6f 6c 65 4f 75 74 70 75 74 41 28 0d 0a 20 20 soleOutputA(..
1c10: 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f HANDLE hConso
1c20: 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 leOutput,..
1c30: 50 43 48 41 52 5f 49 4e 46 4f 20 6c 70 42 75 66 PCHAR_INFO lpBuf
1c40: 66 65 72 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 44 fer,.. COORD
1c50: 20 64 77 42 75 66 66 65 72 53 69 7a 65 2c 0d 0a dwBufferSize,..
1c60: 20 20 20 20 20 43 4f 4f 52 44 20 64 77 42 75 66 COORD dwBuf
1c70: 66 65 72 43 6f 6f 72 64 2c 0d 0a 20 20 20 20 20 ferCoord,..
1c80: 20 50 53 4d 41 4c 4c 5f 52 45 43 54 20 6c 70 52 PSMALL_RECT lpR
1c90: 65 61 64 52 65 67 69 6f 6e 0d 0a 20 20 20 20 29 eadRegion.. )
1ca0: 3b 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 ;..extern(Window
1cb0: 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 52 s) export BOOL R
1cc0: 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 eadConsoleOutput
1cd0: 57 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 W(.. HANDLE
1ce0: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
1cf0: 0a 20 20 20 20 20 50 43 48 41 52 5f 49 4e 46 4f . PCHAR_INFO
1d00: 20 6c 70 42 75 66 66 65 72 2c 0d 0a 20 20 20 20 lpBuffer,..
1d10: 20 43 4f 4f 52 44 20 64 77 42 75 66 66 65 72 53 COORD dwBufferS
1d20: 69 7a 65 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 44 ize,.. COORD
1d30: 20 64 77 42 75 66 66 65 72 43 6f 6f 72 64 2c 0d dwBufferCoord,.
1d40: 0a 20 20 20 20 20 20 50 53 4d 41 4c 4c 5f 52 45 . PSMALL_RE
1d50: 43 54 20 6c 70 52 65 61 64 52 65 67 69 6f 6e 0d CT lpReadRegion.
1d60: 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 66 64 . );..// #ifd
1d70: 65 66 20 55 4e 49 43 4f 44 45 0d 0a 61 6c 69 61 ef UNICODE..alia
1d80: 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 s ReadConsoleOut
1d90: 70 75 74 57 20 52 65 61 64 43 6f 6e 73 6f 6c 65 putW ReadConsole
1da0: 4f 75 74 70 75 74 3b 0d 0a 2f 2f 20 23 65 6c 73 Output;..// #els
1db0: 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 e..// #.....// #
1dc0: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
1dd0: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
1de0: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
1df0: 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 WriteConsoleOut
1e00: 70 75 74 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 putA(.. HAND
1e10: 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 LE hConsoleOutpu
1e20: 74 2c 0d 0a 20 20 20 20 20 20 43 48 41 52 5f 49 t,.. CHAR_I
1e30: 4e 46 4f 20 2a 6c 70 42 75 66 66 65 72 2c 0d 0a NFO *lpBuffer,..
1e40: 20 20 20 20 20 43 4f 4f 52 44 20 64 77 42 75 66 COORD dwBuf
1e50: 66 65 72 53 69 7a 65 2c 0d 0a 20 20 20 20 20 43 ferSize,.. C
1e60: 4f 4f 52 44 20 64 77 42 75 66 66 65 72 43 6f 6f OORD dwBufferCoo
1e70: 72 64 2c 0d 0a 20 20 20 20 20 20 50 53 4d 41 4c rd,.. PSMAL
1e80: 4c 5f 52 45 43 54 20 6c 70 57 72 69 74 65 52 65 L_RECT lpWriteRe
1e90: 67 69 6f 6e 0d 0a 20 20 20 20 29 3b 0d 0a 65 78 gion.. );..ex
1ea0: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
1eb0: 70 6f 72 74 20 42 4f 4f 4c 20 57 72 69 74 65 43 port BOOL WriteC
1ec0: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 57 28 0d 0a onsoleOutputW(..
1ed0: 20 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e HANDLE hCon
1ee0: 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 soleOutput,..
1ef0: 20 20 20 43 48 41 52 5f 49 4e 46 4f 20 2a 6c 70 CHAR_INFO *lp
1f00: 42 75 66 66 65 72 2c 0d 0a 20 20 20 20 20 43 4f Buffer,.. CO
1f10: 4f 52 44 20 64 77 42 75 66 66 65 72 53 69 7a 65 ORD dwBufferSize
1f20: 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 44 20 64 77 ,.. COORD dw
1f30: 42 75 66 66 65 72 43 6f 6f 72 64 2c 0d 0a 20 20 BufferCoord,..
1f40: 20 20 20 20 50 53 4d 41 4c 4c 5f 52 45 43 54 20 PSMALL_RECT
1f50: 6c 70 57 72 69 74 65 52 65 67 69 6f 6e 0d 0a 20 lpWriteRegion..
1f60: 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 66 );..// #ifdef
1f70: 20 55 4e 49 43 4f 44 45 0d 0a 61 6c 69 61 73 20 UNICODE..alias
1f80: 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 WriteConsoleOutp
1f90: 75 74 57 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 utW WriteConsole
1fa0: 4f 75 74 70 75 74 3b 0d 0a 2f 2f 20 23 65 6c 73 Output;..// #els
1fb0: 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 e..// #.....// #
1fc0: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
1fd0: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
1fe0: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
1ff0: 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 ReadConsoleOutp
2000: 75 74 43 68 61 72 61 63 74 65 72 41 28 0d 0a 20 utCharacterA(..
2010: 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 HANDLE hCons
2020: 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 oleOutput,..
2030: 20 4c 50 53 54 52 20 6c 70 43 68 61 72 61 63 74 LPSTR lpCharact
2040: 65 72 2c 0d 0a 20 20 20 20 20 20 44 57 4f 52 44 er,.. DWORD
2050: 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 20 20 20 20 nLength,..
2060: 43 4f 4f 52 44 20 64 77 52 65 61 64 43 6f 6f 72 COORD dwReadCoor
2070: 64 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 d,.. LPDWORD
2080: 20 6c 70 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 lpNumberOfChars
2090: 52 65 61 64 0d 0a 20 20 20 20 29 3b 0d 0a 65 78 Read.. );..ex
20a0: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
20b0: 70 6f 72 74 20 42 4f 4f 4c 20 52 65 61 64 43 6f port BOOL ReadCo
20c0: 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 nsoleOutputChara
20d0: 63 74 65 72 57 28 0d 0a 20 20 20 20 20 48 41 4e cterW(.. HAN
20e0: 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 DLE hConsoleOutp
20f0: 75 74 2c 0d 0a 20 20 20 20 20 4c 50 57 53 54 52 ut,.. LPWSTR
2100: 20 6c 70 43 68 61 72 61 63 74 65 72 2c 0d 0a 20 lpCharacter,..
2110: 20 20 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e 67 DWORD nLeng
2120: 74 68 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 44 20 th,.. COORD
2130: 64 77 52 65 61 64 43 6f 6f 72 64 2c 0d 0a 20 20 dwReadCoord,..
2140: 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d LPDWORD lpNum
2150: 62 65 72 4f 66 43 68 61 72 73 52 65 61 64 0d 0a berOfCharsRead..
2160: 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 );..// #ifde
2170: 66 20 55 4e 49 43 4f 44 45 0d 0a 61 6c 69 61 73 f UNICODE..alias
2180: 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 ReadConsoleOutp
2190: 75 74 43 68 61 72 61 63 74 65 72 57 20 52 65 61 utCharacterW Rea
21a0: 64 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 dConsoleOutputCh
21b0: 61 72 61 63 74 65 72 3b 0d 0a 2f 2f 20 23 65 6c aracter;..// #el
21c0: 73 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 se..// #.....//
21d0: 23 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f #endif // !UNICO
21e0: 44 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e DE....extern(Win
21f0: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f dows) export BOO
2200: 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 4f 75 74 L ReadConsoleOut
2210: 70 75 74 41 74 74 72 69 62 75 74 65 28 0d 0a 20 putAttribute(..
2220: 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 HANDLE hCons
2230: 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 oleOutput,..
2240: 20 4c 50 57 4f 52 44 20 6c 70 41 74 74 72 69 62 LPWORD lpAttrib
2250: 75 74 65 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 ute,.. DWORD
2260: 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 20 20 20 20 nLength,..
2270: 43 4f 4f 52 44 20 64 77 52 65 61 64 43 6f 6f 72 COORD dwReadCoor
2280: 64 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 d,.. LPDWORD
2290: 20 6c 70 4e 75 6d 62 65 72 4f 66 41 74 74 72 73 lpNumberOfAttrs
22a0: 52 65 61 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a Read.. );....
22b0: 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 extern(Windows)
22c0: 65 78 70 6f 72 74 20 42 4f 4f 4c 20 57 72 69 74 export BOOL Writ
22d0: 65 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 eConsoleOutputCh
22e0: 61 72 61 63 74 65 72 41 28 0d 0a 20 20 20 20 20 aracterA(..
22f0: 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f HANDLE hConsoleO
2300: 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 4c 50 43 utput,.. LPC
2310: 53 54 52 20 6c 70 43 68 61 72 61 63 74 65 72 2c STR lpCharacter,
2320: 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 6e 4c 65 .. DWORD nLe
2330: 6e 67 74 68 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 ngth,.. COOR
2340: 44 20 64 77 57 72 69 74 65 43 6f 6f 72 64 2c 0d D dwWriteCoord,.
2350: 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 . LPDWORD lp
2360: 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 57 72 69 NumberOfCharsWri
2370: 74 74 65 6e 0d 0a 20 20 20 20 29 3b 0d 0a 65 78 tten.. );..ex
2380: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
2390: 70 6f 72 74 20 42 4f 4f 4c 20 57 72 69 74 65 43 port BOOL WriteC
23a0: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 onsoleOutputChar
23b0: 61 63 74 65 72 57 28 0d 0a 20 20 20 20 20 48 41 acterW(.. HA
23c0: 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 NDLE hConsoleOut
23d0: 70 75 74 2c 0d 0a 20 20 20 20 20 4c 50 43 57 53 put,.. LPCWS
23e0: 54 52 20 6c 70 43 68 61 72 61 63 74 65 72 2c 0d TR lpCharacter,.
23f0: 0a 20 20 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e . DWORD nLen
2400: 67 74 68 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 44 gth,.. COORD
2410: 20 64 77 57 72 69 74 65 43 6f 6f 72 64 2c 0d 0a dwWriteCoord,..
2420: 20 20 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e LPDWORD lpN
2430: 75 6d 62 65 72 4f 66 43 68 61 72 73 57 72 69 74 umberOfCharsWrit
2440: 74 65 6e 0d 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 ten.. );..//
2450: 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a #ifdef UNICODE..
2460: 61 6c 69 61 73 20 57 72 69 74 65 43 6f 6e 73 6f alias WriteConso
2470: 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 leOutputCharacte
2480: 72 57 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 4f rW WriteConsoleO
2490: 75 74 70 75 74 43 68 61 72 61 63 74 65 72 3b 0d utputCharacter;.
24a0: 0a 2f 2f 20 23 65 6c 73 65 0d 0a 2f 2f 20 23 2e .// #else..// #.
24b0: 2e 2e 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f ....// #endif //
24c0: 20 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 !UNICODE....ext
24d0: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
24e0: 6f 72 74 20 42 4f 4f 4c 20 57 72 69 74 65 43 6f ort BOOL WriteCo
24f0: 6e 73 6f 6c 65 4f 75 74 70 75 74 41 74 74 72 69 nsoleOutputAttri
2500: 62 75 74 65 28 0d 0a 20 20 20 20 20 48 41 4e 44 bute(.. HAND
2510: 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 LE hConsoleOutpu
2520: 74 2c 0d 0a 20 20 20 20 20 20 57 4f 52 44 20 2a t,.. WORD *
2530: 6c 70 41 74 74 72 69 62 75 74 65 2c 0d 0a 20 20 lpAttribute,..
2540: 20 20 20 44 57 4f 52 44 20 6e 4c 65 6e 67 74 68 DWORD nLength
2550: 2c 0d 0a 20 20 20 20 20 43 4f 4f 52 44 20 64 77 ,.. COORD dw
2560: 57 72 69 74 65 43 6f 6f 72 64 2c 0d 0a 20 20 20 WriteCoord,..
2570: 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 LPDWORD lpNumb
2580: 65 72 4f 66 41 74 74 72 73 57 72 69 74 74 65 6e erOfAttrsWritten
2590: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 .. );....exte
25a0: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
25b0: 72 74 20 42 4f 4f 4c 20 46 69 6c 6c 43 6f 6e 73 rt BOOL FillCons
25c0: 6f 6c 65 4f 75 74 70 75 74 43 68 61 72 61 63 74 oleOutputCharact
25d0: 65 72 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c erA(.. HANDL
25e0: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
25f0: 2c 0d 0a 20 20 20 20 20 43 48 41 52 20 20 63 43 ,.. CHAR cC
2600: 68 61 72 61 63 74 65 72 2c 0d 0a 20 20 20 20 20 haracter,..
2610: 44 57 4f 52 44 20 20 6e 4c 65 6e 67 74 68 2c 0d DWORD nLength,.
2620: 0a 20 20 20 20 20 43 4f 4f 52 44 20 20 64 77 57 . COORD dwW
2630: 72 69 74 65 43 6f 6f 72 64 2c 0d 0a 20 20 20 20 riteCoord,..
2640: 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 LPDWORD lpNumbe
2650: 72 4f 66 43 68 61 72 73 57 72 69 74 74 65 6e 0d rOfCharsWritten.
2660: 0a 20 20 20 20 29 3b 0d 0a 65 78 74 65 72 6e 28 . );..extern(
2670: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
2680: 42 4f 4f 4c 20 46 69 6c 6c 43 6f 6e 73 6f 6c 65 BOOL FillConsole
2690: 4f 75 74 70 75 74 43 68 61 72 61 63 74 65 72 57 OutputCharacterW
26a0: 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 68 (.. HANDLE h
26b0: 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a ConsoleOutput,..
26c0: 20 20 20 20 20 57 43 48 41 52 20 20 63 43 68 61 WCHAR cCha
26d0: 72 61 63 74 65 72 2c 0d 0a 20 20 20 20 20 44 57 racter,.. DW
26e0: 4f 52 44 20 20 6e 4c 65 6e 67 74 68 2c 0d 0a 20 ORD nLength,..
26f0: 20 20 20 20 43 4f 4f 52 44 20 20 64 77 57 72 69 COORD dwWri
2700: 74 65 43 6f 6f 72 64 2c 0d 0a 20 20 20 20 20 4c teCoord,.. L
2710: 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 65 72 4f PDWORD lpNumberO
2720: 66 43 68 61 72 73 57 72 69 74 74 65 6e 0d 0a 20 fCharsWritten..
2730: 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 66 64 65 66 );..// #ifdef
2740: 20 55 4e 49 43 4f 44 45 0d 0a 61 6c 69 61 73 20 UNICODE..alias
2750: 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 FillConsoleOutpu
2760: 74 43 68 61 72 61 63 74 65 72 57 20 46 69 6c 6c tCharacterW Fill
2770: 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 43 68 61 ConsoleOutputCha
2780: 72 61 63 74 65 72 3b 0d 0a 2f 2f 20 23 65 6c 73 racter;..// #els
2790: 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 e..// #.....// #
27a0: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
27b0: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
27c0: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
27d0: 20 46 69 6c 6c 43 6f 6e 73 6f 6c 65 4f 75 74 70 FillConsoleOutp
27e0: 75 74 41 74 74 72 69 62 75 74 65 28 0d 0a 20 20 utAttribute(..
27f0: 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f HANDLE hConso
2800: 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 leOutput,..
2810: 57 4f 52 44 20 20 20 77 41 74 74 72 69 62 75 74 WORD wAttribut
2820: 65 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 20 e,.. DWORD
2830: 6e 4c 65 6e 67 74 68 2c 0d 0a 20 20 20 20 20 43 nLength,.. C
2840: 4f 4f 52 44 20 20 64 77 57 72 69 74 65 43 6f 6f OORD dwWriteCoo
2850: 72 64 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 rd,.. LPDWOR
2860: 44 20 6c 70 4e 75 6d 62 65 72 4f 66 41 74 74 72 D lpNumberOfAttr
2870: 73 57 72 69 74 74 65 6e 0d 0a 20 20 20 20 29 3b sWritten.. );
2880: 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f ....extern(Windo
2890: 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 ws) export BOOL
28a0: 47 65 74 43 6f 6e 73 6f 6c 65 4d 6f 64 65 28 0d GetConsoleMode(.
28b0: 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f . HANDLE hCo
28c0: 6e 73 6f 6c 65 48 61 6e 64 6c 65 2c 0d 0a 20 20 nsoleHandle,..
28d0: 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 4d 6f 64 LPDWORD lpMod
28e0: 65 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 e.. );....ext
28f0: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
2900: 6f 72 74 20 42 4f 4f 4c 20 47 65 74 4e 75 6d 62 ort BOOL GetNumb
2910: 65 72 4f 66 43 6f 6e 73 6f 6c 65 49 6e 70 75 74 erOfConsoleInput
2920: 45 76 65 6e 74 73 28 0d 0a 20 20 20 20 20 48 41 Events(.. HA
2930: 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 49 6e 70 NDLE hConsoleInp
2940: 75 74 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 ut,.. LPDWOR
2950: 44 20 6c 70 4e 75 6d 62 65 72 4f 66 45 76 65 6e D lpNumberOfEven
2960: 74 73 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 ts.. );....ex
2970: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
2980: 70 6f 72 74 20 42 4f 4f 4c 20 47 65 74 43 6f 6e port BOOL GetCon
2990: 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 65 72 soleScreenBuffer
29a0: 49 6e 66 6f 28 0d 0a 20 20 20 20 20 48 41 4e 44 Info(.. HAND
29b0: 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 LE hConsoleOutpu
29c0: 74 2c 0d 0a 20 20 20 20 20 50 43 4f 4e 53 4f 4c t,.. PCONSOL
29d0: 45 5f 53 43 52 45 45 4e 5f 42 55 46 46 45 52 5f E_SCREEN_BUFFER_
29e0: 49 4e 46 4f 20 6c 70 43 6f 6e 73 6f 6c 65 53 63 INFO lpConsoleSc
29f0: 72 65 65 6e 42 75 66 66 65 72 49 6e 66 6f 0d 0a reenBufferInfo..
2a00: 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e );....extern
2a10: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
2a20: 20 43 4f 4f 52 44 20 47 65 74 4c 61 72 67 65 73 COORD GetLarges
2a30: 74 43 6f 6e 73 6f 6c 65 57 69 6e 64 6f 77 53 69 tConsoleWindowSi
2a40: 7a 65 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 ze(.. HANDLE
2a50: 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 0d hConsoleOutput.
2a60: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 . );....exter
2a70: 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 n(Windows) expor
2a80: 74 20 42 4f 4f 4c 20 47 65 74 43 6f 6e 73 6f 6c t BOOL GetConsol
2a90: 65 43 75 72 73 6f 72 49 6e 66 6f 28 0d 0a 20 20 eCursorInfo(..
2aa0: 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f HANDLE hConso
2ab0: 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 leOutput,..
2ac0: 50 43 4f 4e 53 4f 4c 45 5f 43 55 52 53 4f 52 5f PCONSOLE_CURSOR_
2ad0: 49 4e 46 4f 20 6c 70 43 6f 6e 73 6f 6c 65 43 75 INFO lpConsoleCu
2ae0: 72 73 6f 72 49 6e 66 6f 0d 0a 20 20 20 20 29 3b rsorInfo.. );
2af0: 0d 0a 0d 0a 2f 2f 20 23 69 66 28 5f 57 49 4e 33 ....// #if(_WIN3
2b00: 32 5f 57 49 4e 4e 54 20 3e 3d 20 30 78 30 35 30 2_WINNT >= 0x050
2b10: 30 29 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 0)....extern(Win
2b20: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f dows) export BOO
2b30: 4c 20 47 65 74 43 75 72 72 65 6e 74 43 6f 6e 73 L GetCurrentCons
2b40: 6f 6c 65 46 6f 6e 74 28 0d 0a 20 20 20 20 20 48 oleFont(.. H
2b50: 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 ANDLE hConsoleOu
2b60: 74 70 75 74 2c 0d 0a 20 20 20 20 20 42 4f 4f 4c tput,.. BOOL
2b70: 20 62 4d 61 78 69 6d 75 6d 57 69 6e 64 6f 77 2c bMaximumWindow,
2b80: 0d 0a 20 20 20 20 20 50 43 4f 4e 53 4f 4c 45 5f .. PCONSOLE_
2b90: 46 4f 4e 54 5f 49 4e 46 4f 20 6c 70 43 6f 6e 73 FONT_INFO lpCons
2ba0: 6f 6c 65 43 75 72 72 65 6e 74 46 6f 6e 74 0d 0a oleCurrentFont..
2bb0: 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e );....extern
2bc0: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
2bd0: 20 43 4f 4f 52 44 20 47 65 74 43 6f 6e 73 6f 6c COORD GetConsol
2be0: 65 46 6f 6e 74 53 69 7a 65 28 0d 0a 20 20 20 20 eFontSize(..
2bf0: 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 HANDLE hConsole
2c00: 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 44 57 Output,.. DW
2c10: 4f 52 44 20 6e 46 6f 6e 74 0d 0a 20 20 20 20 29 ORD nFont.. )
2c20: 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 ;....extern(Wind
2c30: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
2c40: 20 47 65 74 43 6f 6e 73 6f 6c 65 53 65 6c 65 63 GetConsoleSelec
2c50: 74 69 6f 6e 49 6e 66 6f 28 0d 0a 20 20 20 20 20 tionInfo(..
2c60: 50 43 4f 4e 53 4f 4c 45 5f 53 45 4c 45 43 54 49 PCONSOLE_SELECTI
2c70: 4f 4e 5f 49 4e 46 4f 20 6c 70 43 6f 6e 73 6f 6c ON_INFO lpConsol
2c80: 65 53 65 6c 65 63 74 69 6f 6e 49 6e 66 6f 0d 0a eSelectionInfo..
2c90: 20 20 20 20 29 3b 0d 0a 0d 0a 2f 2f 20 23 65 6e );....// #en
2ca0: 64 69 66 20 2f 2a 20 5f 57 49 4e 33 32 5f 57 49 dif /* _WIN32_WI
2cb0: 4e 4e 54 20 3e 3d 20 30 78 30 35 30 30 20 2a 2f NNT >= 0x0500 */
2cc0: 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f ....extern(Windo
2cd0: 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 ws) export BOOL
2ce0: 47 65 74 4e 75 6d 62 65 72 4f 66 43 6f 6e 73 6f GetNumberOfConso
2cf0: 6c 65 4d 6f 75 73 65 42 75 74 74 6f 6e 73 28 0d leMouseButtons(.
2d00: 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 . LPDWORD lp
2d10: 4e 75 6d 62 65 72 4f 66 4d 6f 75 73 65 42 75 74 NumberOfMouseBut
2d20: 74 6f 6e 73 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a tons.. );....
2d30: 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 extern(Windows)
2d40: 65 78 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 export BOOL SetC
2d50: 6f 6e 73 6f 6c 65 4d 6f 64 65 28 0d 0a 20 20 20 onsoleMode(..
2d60: 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c HANDLE hConsol
2d70: 65 48 61 6e 64 6c 65 2c 0d 0a 20 20 20 20 20 44 eHandle,.. D
2d80: 57 4f 52 44 20 64 77 4d 6f 64 65 0d 0a 20 20 20 WORD dwMode..
2d90: 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 );....extern(Wi
2da0: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
2db0: 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 41 63 74 OL SetConsoleAct
2dc0: 69 76 65 53 63 72 65 65 6e 42 75 66 66 65 72 28 iveScreenBuffer(
2dd0: 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 68 43 .. HANDLE hC
2de0: 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 0d 0a 20 20 onsoleOutput..
2df0: 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 );....extern(W
2e00: 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 indows) export B
2e10: 4f 4f 4c 20 46 6c 75 73 68 43 6f 6e 73 6f 6c 65 OOL FlushConsole
2e20: 49 6e 70 75 74 42 75 66 66 65 72 28 0d 0a 20 20 InputBuffer(..
2e30: 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f HANDLE hConso
2e40: 6c 65 49 6e 70 75 74 0d 0a 20 20 20 20 29 3b 0d leInput.. );.
2e50: 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 ...extern(Window
2e60: 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 53 s) export BOOL S
2e70: 65 74 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 etConsoleScreenB
2e80: 75 66 66 65 72 53 69 7a 65 28 0d 0a 20 20 20 20 ufferSize(..
2e90: 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c 65 HANDLE hConsole
2ea0: 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 43 4f Output,.. CO
2eb0: 4f 52 44 20 64 77 53 69 7a 65 0d 0a 20 20 20 20 ORD dwSize..
2ec0: 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e );....extern(Win
2ed0: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f dows) export BOO
2ee0: 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 43 75 72 73 L SetConsoleCurs
2ef0: 6f 72 50 6f 73 69 74 69 6f 6e 28 0d 0a 20 20 20 orPosition(..
2f00: 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f 6c HANDLE hConsol
2f10: 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 43 eOutput,.. C
2f20: 4f 4f 52 44 20 64 77 43 75 72 73 6f 72 50 6f 73 OORD dwCursorPos
2f30: 69 74 69 6f 6e 0d 0a 20 20 20 20 29 3b 0d 0a 0d ition.. );...
2f40: 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 .extern(Windows)
2f50: 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 export BOOL Set
2f60: 43 6f 6e 73 6f 6c 65 43 75 72 73 6f 72 49 6e 66 ConsoleCursorInf
2f70: 6f 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 o(.. HANDLE
2f80: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
2f90: 0a 20 20 20 20 20 20 43 4f 4e 53 4f 4c 45 5f 43 . CONSOLE_C
2fa0: 55 52 53 4f 52 5f 49 4e 46 4f 20 2a 6c 70 43 6f URSOR_INFO *lpCo
2fb0: 6e 73 6f 6c 65 43 75 72 73 6f 72 49 6e 66 6f 0d nsoleCursorInfo.
2fc0: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 . );....exter
2fd0: 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 n(Windows) expor
2fe0: 74 20 42 4f 4f 4c 20 53 63 72 6f 6c 6c 43 6f 6e t BOOL ScrollCon
2ff0: 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 65 72 soleScreenBuffer
3000: 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 A(.. HANDLE
3010: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
3020: 0a 20 20 20 20 20 20 53 4d 41 4c 4c 5f 52 45 43 . SMALL_REC
3030: 54 20 2a 6c 70 53 63 72 6f 6c 6c 52 65 63 74 61 T *lpScrollRecta
3040: 6e 67 6c 65 2c 0d 0a 20 20 20 20 20 20 53 4d 41 ngle,.. SMA
3050: 4c 4c 5f 52 45 43 54 20 2a 6c 70 43 6c 69 70 52 LL_RECT *lpClipR
3060: 65 63 74 61 6e 67 6c 65 2c 0d 0a 20 20 20 20 20 ectangle,..
3070: 43 4f 4f 52 44 20 64 77 44 65 73 74 69 6e 61 74 COORD dwDestinat
3080: 69 6f 6e 4f 72 69 67 69 6e 2c 0d 0a 20 20 20 20 ionOrigin,..
3090: 20 20 43 48 41 52 5f 49 4e 46 4f 20 2a 6c 70 46 CHAR_INFO *lpF
30a0: 69 6c 6c 0d 0a 20 20 20 20 29 3b 0d 0a 65 78 74 ill.. );..ext
30b0: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
30c0: 6f 72 74 20 42 4f 4f 4c 20 53 63 72 6f 6c 6c 43 ort BOOL ScrollC
30d0: 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 onsoleScreenBuff
30e0: 65 72 57 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c erW(.. HANDL
30f0: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
3100: 2c 0d 0a 20 20 20 20 20 20 53 4d 41 4c 4c 5f 52 ,.. SMALL_R
3110: 45 43 54 20 2a 6c 70 53 63 72 6f 6c 6c 52 65 63 ECT *lpScrollRec
3120: 74 61 6e 67 6c 65 2c 0d 0a 20 20 20 20 20 20 53 tangle,.. S
3130: 4d 41 4c 4c 5f 52 45 43 54 20 2a 6c 70 43 6c 69 MALL_RECT *lpCli
3140: 70 52 65 63 74 61 6e 67 6c 65 2c 0d 0a 20 20 20 pRectangle,..
3150: 20 20 43 4f 4f 52 44 20 64 77 44 65 73 74 69 6e COORD dwDestin
3160: 61 74 69 6f 6e 4f 72 69 67 69 6e 2c 0d 0a 20 20 ationOrigin,..
3170: 20 20 20 20 43 48 41 52 5f 49 4e 46 4f 20 2a 6c CHAR_INFO *l
3180: 70 46 69 6c 6c 0d 0a 20 20 20 20 29 3b 0d 0a 2f pFill.. );../
3190: 2f 20 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 / #ifdef UNICODE
31a0: 0d 0a 61 6c 69 61 73 20 53 63 72 6f 6c 6c 43 6f ..alias ScrollCo
31b0: 6e 73 6f 6c 65 53 63 72 65 65 6e 42 75 66 66 65 nsoleScreenBuffe
31c0: 72 57 20 53 63 72 6f 6c 6c 43 6f 6e 73 6f 6c 65 rW ScrollConsole
31d0: 53 63 72 65 65 6e 42 75 66 66 65 72 3b 0d 0a 2f ScreenBuffer;../
31e0: 2f 20 23 65 6c 73 65 0d 0a 2f 2f 20 23 2e 2e 2e / #else..// #...
31f0: 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 21 ..// #endif // !
3200: 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 UNICODE....exter
3210: 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 n(Windows) expor
3220: 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c t BOOL SetConsol
3230: 65 57 69 6e 64 6f 77 49 6e 66 6f 28 0d 0a 20 20 eWindowInfo(..
3240: 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 6f HANDLE hConso
3250: 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 20 leOutput,..
3260: 42 4f 4f 4c 20 62 41 62 73 6f 6c 75 74 65 2c 0d BOOL bAbsolute,.
3270: 0a 20 20 20 20 20 20 53 4d 41 4c 4c 5f 52 45 43 . SMALL_REC
3280: 54 20 2a 6c 70 43 6f 6e 73 6f 6c 65 57 69 6e 64 T *lpConsoleWind
3290: 6f 77 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 ow.. );....ex
32a0: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
32b0: 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e port BOOL SetCon
32c0: 73 6f 6c 65 54 65 78 74 41 74 74 72 69 62 75 74 soleTextAttribut
32d0: 65 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 e(.. HANDLE
32e0: 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 2c 0d hConsoleOutput,.
32f0: 0a 20 20 20 20 20 57 4f 52 44 20 77 41 74 74 72 . WORD wAttr
3300: 69 62 75 74 65 73 0d 0a 20 20 20 20 29 3b 0d 0a ibutes.. );..
3310: 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 ..extern(Windows
3320: 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 53 65 ) export BOOL Se
3330: 74 43 6f 6e 73 6f 6c 65 43 74 72 6c 48 61 6e 64 tConsoleCtrlHand
3340: 6c 65 72 28 0d 0a 20 20 20 20 20 50 48 41 4e 44 ler(.. PHAND
3350: 4c 45 52 5f 52 4f 55 54 49 4e 45 20 48 61 6e 64 LER_ROUTINE Hand
3360: 6c 65 72 52 6f 75 74 69 6e 65 2c 0d 0a 20 20 20 lerRoutine,..
3370: 20 20 42 4f 4f 4c 20 41 64 64 0d 0a 20 20 20 20 BOOL Add..
3380: 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e );....extern(Win
3390: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f dows) export BOO
33a0: 4c 20 47 65 6e 65 72 61 74 65 43 6f 6e 73 6f 6c L GenerateConsol
33b0: 65 43 74 72 6c 45 76 65 6e 74 28 0d 0a 20 20 20 eCtrlEvent(..
33c0: 20 20 44 57 4f 52 44 20 64 77 43 74 72 6c 45 76 DWORD dwCtrlEv
33d0: 65 6e 74 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 ent,.. DWORD
33e0: 20 64 77 50 72 6f 63 65 73 73 47 72 6f 75 70 49 dwProcessGroupI
33f0: 64 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 d.. );....ext
3400: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
3410: 6f 72 74 20 42 4f 4f 4c 20 41 6c 6c 6f 63 43 6f ort BOOL AllocCo
3420: 6e 73 6f 6c 65 28 29 3b 0d 0a 0d 0a 65 78 74 65 nsole();....exte
3430: 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f rn(Windows) expo
3440: 72 74 20 42 4f 4f 4c 20 46 72 65 65 43 6f 6e 73 rt BOOL FreeCons
3450: 6f 6c 65 28 29 3b 0d 0a 0d 0a 2f 2f 20 23 69 66 ole();....// #if
3460: 28 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e 3d (_WIN32_WINNT >=
3470: 20 30 78 30 35 30 30 29 0d 0a 65 78 74 65 72 6e 0x0500)..extern
3480: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
3490: 20 42 4f 4f 4c 20 41 74 74 61 63 68 43 6f 6e 73 BOOL AttachCons
34a0: 6f 6c 65 28 0d 0a 20 20 20 20 20 44 57 4f 52 44 ole(.. DWORD
34b0: 20 64 77 50 72 6f 63 65 73 73 49 64 0d 0a 20 20 dwProcessId..
34c0: 20 20 29 3b 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 );..// #endif
34d0: 2f 2a 20 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 /* _WIN32_WINNT
34e0: 3e 3d 20 30 78 30 35 30 30 20 2a 2f 0d 0a 0d 0a >= 0x0500 */....
34f0: 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 extern(Windows)
3500: 65 78 70 6f 72 74 20 44 57 4f 52 44 20 47 65 74 export DWORD Get
3510: 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 41 28 0d 0a ConsoleTitleA(..
3520: 20 20 20 20 20 4c 50 53 54 52 20 6c 70 43 6f 6e LPSTR lpCon
3530: 73 6f 6c 65 54 69 74 6c 65 2c 0d 0a 20 20 20 20 soleTitle,..
3540: 20 44 57 4f 52 44 20 6e 53 69 7a 65 0d 0a 20 20 DWORD nSize..
3550: 20 20 29 3b 0d 0a 65 78 74 65 72 6e 28 57 69 6e );..extern(Win
3560: 64 6f 77 73 29 20 65 78 70 6f 72 74 20 44 57 4f dows) export DWO
3570: 52 44 20 47 65 74 43 6f 6e 73 6f 6c 65 54 69 74 RD GetConsoleTit
3580: 6c 65 57 28 0d 0a 20 20 20 20 20 4c 50 57 53 54 leW(.. LPWST
3590: 52 20 6c 70 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 R lpConsoleTitle
35a0: 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 6e 53 ,.. DWORD nS
35b0: 69 7a 65 0d 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 ize.. );..//
35c0: 23 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a #ifdef UNICODE..
35d0: 61 6c 69 61 73 20 47 65 74 43 6f 6e 73 6f 6c 65 alias GetConsole
35e0: 54 69 74 6c 65 57 20 47 65 74 43 6f 6e 73 6f 6c TitleW GetConsol
35f0: 65 54 69 74 6c 65 3b 0d 0a 2f 2f 20 23 65 6c 73 eTitle;..// #els
3600: 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 e..// #.....// #
3610: 65 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 endif // !UNICOD
3620: 45 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 E....extern(Wind
3630: 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c ows) export BOOL
3640: 20 53 65 74 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 SetConsoleTitle
3650: 41 28 0d 0a 20 20 20 20 20 4c 50 43 53 54 52 20 A(.. LPCSTR
3660: 6c 70 43 6f 6e 73 6f 6c 65 54 69 74 6c 65 0d 0a lpConsoleTitle..
3670: 20 20 20 20 29 3b 0d 0a 65 78 74 65 72 6e 28 57 );..extern(W
3680: 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 indows) export B
3690: 4f 4f 4c 20 53 65 74 43 6f 6e 73 6f 6c 65 54 69 OOL SetConsoleTi
36a0: 74 6c 65 57 28 0d 0a 20 20 20 20 20 4c 50 43 57 tleW(.. LPCW
36b0: 53 54 52 20 6c 70 43 6f 6e 73 6f 6c 65 54 69 74 STR lpConsoleTit
36c0: 6c 65 0d 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 le.. );..// #
36d0: 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a 61 ifdef UNICODE..a
36e0: 6c 69 61 73 20 53 65 74 43 6f 6e 73 6f 6c 65 54 lias SetConsoleT
36f0: 69 74 6c 65 57 20 53 65 74 43 6f 6e 73 6f 6c 65 itleW SetConsole
3700: 54 69 74 6c 65 3b 0d 0a 2f 2f 20 23 65 6c 73 65 Title;..// #else
3710: 0d 0a 2f 2f 20 23 2e 2e 2e 0d 0a 2f 2f 20 23 65 ..// #.....// #e
3720: 6e 64 69 66 20 2f 2f 20 21 55 4e 49 43 4f 44 45 ndif // !UNICODE
3730: 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f ....extern(Windo
3740: 77 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 ws) export BOOL
3750: 52 65 61 64 43 6f 6e 73 6f 6c 65 41 28 0d 0a 20 ReadConsoleA(..
3760: 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 HANDLE hCons
3770: 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 20 20 20 oleInput,..
3780: 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 65 72 2c LPVOID lpBuffer,
3790: 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 6e 4e 75 .. DWORD nNu
37a0: 6d 62 65 72 4f 66 43 68 61 72 73 54 6f 52 65 61 mberOfCharsToRea
37b0: 64 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 d,.. LPDWORD
37c0: 20 6c 70 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 lpNumberOfChars
37d0: 52 65 61 64 2c 0d 0a 20 20 20 20 20 4c 50 56 4f Read,.. LPVO
37e0: 49 44 20 6c 70 52 65 73 65 72 76 65 64 0d 0a 20 ID lpReserved..
37f0: 20 20 20 29 3b 0d 0a 65 78 74 65 72 6e 28 57 69 );..extern(Wi
3800: 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 42 4f ndows) export BO
3810: 4f 4c 20 52 65 61 64 43 6f 6e 73 6f 6c 65 57 28 OL ReadConsoleW(
3820: 0d 0a 20 20 20 20 20 48 41 4e 44 4c 45 20 68 43 .. HANDLE hC
3830: 6f 6e 73 6f 6c 65 49 6e 70 75 74 2c 0d 0a 20 20 onsoleInput,..
3840: 20 20 20 4c 50 56 4f 49 44 20 6c 70 42 75 66 66 LPVOID lpBuff
3850: 65 72 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 er,.. DWORD
3860: 6e 4e 75 6d 62 65 72 4f 66 43 68 61 72 73 54 6f nNumberOfCharsTo
3870: 52 65 61 64 2c 0d 0a 20 20 20 20 20 4c 50 44 57 Read,.. LPDW
3880: 4f 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 43 68 ORD lpNumberOfCh
3890: 61 72 73 52 65 61 64 2c 0d 0a 20 20 20 20 20 4c arsRead,.. L
38a0: 50 56 4f 49 44 20 6c 70 52 65 73 65 72 76 65 64 PVOID lpReserved
38b0: 0d 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 69 66 .. );..// #if
38c0: 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a 61 6c 69 def UNICODE..ali
38d0: 61 73 20 52 65 61 64 43 6f 6e 73 6f 6c 65 57 20 as ReadConsoleW
38e0: 52 65 61 64 43 6f 6e 73 6f 6c 65 3b 0d 0a 2f 2f ReadConsole;..//
38f0: 20 23 65 6c 73 65 0d 0a 2f 2f 20 23 2e 2e 2e 0d #else..// #....
3900: 0a 2f 2f 20 23 65 6e 64 69 66 20 2f 2f 20 21 55 .// #endif // !U
3910: 4e 49 43 4f 44 45 0d 0a 0d 0a 65 78 74 65 72 6e NICODE....extern
3920: 28 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 (Windows) export
3930: 20 42 4f 4f 4c 20 57 72 69 74 65 43 6f 6e 73 6f BOOL WriteConso
3940: 6c 65 41 28 0d 0a 20 20 20 20 20 48 41 4e 44 4c leA(.. HANDL
3950: 45 20 68 43 6f 6e 73 6f 6c 65 4f 75 74 70 75 74 E hConsoleOutput
3960: 2c 0d 0a 20 20 20 20 20 20 56 4f 49 44 20 2a 6c ,.. VOID *l
3970: 70 42 75 66 66 65 72 2c 0d 0a 20 20 20 20 20 44 pBuffer,.. D
3980: 57 4f 52 44 20 6e 4e 75 6d 62 65 72 4f 66 43 68 WORD nNumberOfCh
3990: 61 72 73 54 6f 57 72 69 74 65 2c 0d 0a 20 20 20 arsToWrite,..
39a0: 20 20 4c 50 44 57 4f 52 44 20 6c 70 4e 75 6d 62 LPDWORD lpNumb
39b0: 65 72 4f 66 43 68 61 72 73 57 72 69 74 74 65 6e erOfCharsWritten
39c0: 2c 0d 0a 20 20 20 20 20 4c 50 56 4f 49 44 20 6c ,.. LPVOID l
39d0: 70 52 65 73 65 72 76 65 64 0d 0a 20 20 20 20 29 pReserved.. )
39e0: 3b 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f 77 ;..extern(Window
39f0: 73 29 20 65 78 70 6f 72 74 20 42 4f 4f 4c 20 57 s) export BOOL W
3a00: 72 69 74 65 43 6f 6e 73 6f 6c 65 57 28 0d 0a 20 riteConsoleW(..
3a10: 20 20 20 20 48 41 4e 44 4c 45 20 68 43 6f 6e 73 HANDLE hCons
3a20: 6f 6c 65 4f 75 74 70 75 74 2c 0d 0a 20 20 20 20 oleOutput,..
3a30: 20 20 56 4f 49 44 20 2a 6c 70 42 75 66 66 65 72 VOID *lpBuffer
3a40: 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 6e 4e ,.. DWORD nN
3a50: 75 6d 62 65 72 4f 66 43 68 61 72 73 54 6f 57 72 umberOfCharsToWr
3a60: 69 74 65 2c 0d 0a 20 20 20 20 20 4c 50 44 57 4f ite,.. LPDWO
3a70: 52 44 20 6c 70 4e 75 6d 62 65 72 4f 66 43 68 61 RD lpNumberOfCha
3a80: 72 73 57 72 69 74 74 65 6e 2c 0d 0a 20 20 20 20 rsWritten,..
3a90: 20 4c 50 56 4f 49 44 20 6c 70 52 65 73 65 72 76 LPVOID lpReserv
3aa0: 65 64 0d 0a 20 20 20 20 29 3b 0d 0a 2f 2f 20 23 ed.. );..// #
3ab0: 69 66 64 65 66 20 55 4e 49 43 4f 44 45 0d 0a 61 ifdef UNICODE..a
3ac0: 6c 69 61 73 20 57 72 69 74 65 43 6f 6e 73 6f 6c lias WriteConsol
3ad0: 65 57 20 57 72 69 74 65 43 6f 6e 73 6f 6c 65 3b eW WriteConsole;
3ae0: 0d 0a 2f 2f 20 23 65 6c 73 65 0d 0a 2f 2f 20 23 ..// #else..// #
3af0: 2e 2e 2e 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f .....// #endif /
3b00: 2f 20 21 55 4e 49 43 4f 44 45 0d 0a 0d 0a 65 6e / !UNICODE....en
3b10: 75 6d 20 3a 20 75 69 6e 74 20 7b 20 43 4f 4e 53 um : uint { CONS
3b20: 4f 4c 45 5f 54 45 58 54 4d 4f 44 45 5f 42 55 46 OLE_TEXTMODE_BUF
3b30: 46 45 52 20 3d 20 31 20 7d 0d 0a 0d 0a 65 78 74 FER = 1 }....ext
3b40: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
3b50: 6f 72 74 20 48 41 4e 44 4c 45 20 43 72 65 61 74 ort HANDLE Creat
3b60: 65 43 6f 6e 73 6f 6c 65 53 63 72 65 65 6e 42 75 eConsoleScreenBu
3b70: 66 66 65 72 28 0d 0a 20 20 20 20 20 44 57 4f 52 ffer(.. DWOR
3b80: 44 20 64 77 44 65 73 69 72 65 64 41 63 63 65 73 D dwDesiredAcces
3b90: 73 2c 0d 0a 20 20 20 20 20 44 57 4f 52 44 20 64 s,.. DWORD d
3ba0: 77 53 68 61 72 65 4d 6f 64 65 2c 0d 0a 20 20 20 wShareMode,..
3bb0: 20 20 20 53 45 43 55 52 49 54 59 5f 41 54 54 52 SECURITY_ATTR
3bc0: 49 42 55 54 45 53 20 2a 6c 70 53 65 63 75 72 69 IBUTES *lpSecuri
3bd0: 74 79 41 74 74 72 69 62 75 74 65 73 2c 0d 0a 20 tyAttributes,..
3be0: 20 20 20 20 44 57 4f 52 44 20 64 77 46 6c 61 67 DWORD dwFlag
3bf0: 73 2c 0d 0a 20 20 20 20 20 4c 50 56 4f 49 44 20 s,.. LPVOID
3c00: 6c 70 53 63 72 65 65 6e 42 75 66 66 65 72 44 61 lpScreenBufferDa
3c10: 74 61 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 65 78 ta.. );....ex
3c20: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
3c30: 70 6f 72 74 20 55 49 4e 54 20 47 65 74 43 6f 6e port UINT GetCon
3c40: 73 6f 6c 65 43 50 28 29 3b 0d 0a 0d 0a 65 78 74 soleCP();....ext
3c50: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
3c60: 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e 73 ort BOOL SetCons
3c70: 6f 6c 65 43 50 28 0d 0a 20 20 20 20 20 55 49 4e oleCP(.. UIN
3c80: 54 20 77 43 6f 64 65 50 61 67 65 49 44 0d 0a 20 T wCodePageID..
3c90: 20 20 20 29 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 );....extern(
3ca0: 57 69 6e 64 6f 77 73 29 20 65 78 70 6f 72 74 20 Windows) export
3cb0: 55 49 4e 54 20 47 65 74 43 6f 6e 73 6f 6c 65 4f UINT GetConsoleO
3cc0: 75 74 70 75 74 43 50 28 29 3b 0d 0a 0d 0a 65 78 utputCP();....ex
3cd0: 74 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 tern(Windows) ex
3ce0: 70 6f 72 74 20 42 4f 4f 4c 20 53 65 74 43 6f 6e port BOOL SetCon
3cf0: 73 6f 6c 65 4f 75 74 70 75 74 43 50 28 0d 0a 20 soleOutputCP(..
3d00: 20 20 20 20 55 49 4e 54 20 77 43 6f 64 65 50 61 UINT wCodePa
3d10: 67 65 49 44 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a geID.. );....
3d20: 2f 2f 20 23 69 66 28 5f 57 49 4e 33 32 5f 57 49 // #if(_WIN32_WI
3d30: 4e 4e 54 20 3e 3d 20 30 78 30 35 30 30 29 0d 0a NNT >= 0x0500)..
3d40: 0d 0a 65 6e 75 6d 20 3a 20 75 69 6e 74 20 7b 20 ..enum : uint {
3d50: 43 4f 4e 53 4f 4c 45 5f 46 55 4c 4c 53 43 52 45 CONSOLE_FULLSCRE
3d60: 45 4e 20 3d 20 31 20 7d 0d 0a 65 6e 75 6d 20 3a EN = 1 }..enum :
3d70: 20 75 69 6e 74 20 7b 20 43 4f 4e 53 4f 4c 45 5f uint { CONSOLE_
3d80: 46 55 4c 4c 53 43 52 45 45 4e 5f 48 41 52 44 57 FULLSCREEN_HARDW
3d90: 41 52 45 20 3d 20 32 20 7d 0d 0a 0d 0a 65 78 74 ARE = 2 }....ext
3da0: 65 72 6e 28 57 69 6e 64 6f 77 73 29 20 65 78 70 ern(Windows) exp
3db0: 6f 72 74 20 42 4f 4f 4c 20 47 65 74 43 6f 6e 73 ort BOOL GetCons
3dc0: 6f 6c 65 44 69 73 70 6c 61 79 4d 6f 64 65 28 0d oleDisplayMode(.
3dd0: 0a 20 20 20 20 20 4c 50 44 57 4f 52 44 20 6c 70 . LPDWORD lp
3de0: 4d 6f 64 65 46 6c 61 67 73 0d 0a 20 20 20 20 29 ModeFlags.. )
3df0: 3b 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 ;....extern(Wind
3e00: 6f 77 73 29 20 65 78 70 6f 72 74 20 48 57 4e 44 ows) export HWND
3e10: 20 47 65 74 43 6f 6e 73 6f 6c 65 57 69 6e 64 6f GetConsoleWindo
3e20: 77 28 29 3b 0d 0a 0d 0a 2f 2f 20 23 65 6e 64 69 w();....// #endi
3e30: 66 20 2f 2a 20 5f 57 49 4e 33 32 5f 57 49 4e 4e f /* _WIN32_WINN
3e40: 54 20 3e 3d 20 30 78 30 35 30 30 20 2a 2f 0d 0a T >= 0x0500 */..
3e50: 0d 0a 2f 2f 20 23 69 66 28 5f 57 49 4e 33 32 5f ..// #if(_WIN32_
3e60: 57 49 4e 4e 54 20 3e 3d 20 30 78 30 35 30 31 29 WINNT >= 0x0501)
3e70: 0d 0a 0d 0a 65 78 74 65 72 6e 28 57 69 6e 64 6f ....extern(Windo
3e80: 77 73 29 20 65 78 70 6f 72 74 20 44 57 4f 52 44 ws) export DWORD
3e90: 20 47 65 74 43 6f 6e 73 6f 6c 65 50 72 6f 63 65 GetConsoleProce
3ea0: 73 73 4c 69 73 74 28 0d 0a 20 20 20 20 20 4c 50 ssList(.. LP
3eb0: 44 57 4f 52 44 20 6c 70 64 77 50 72 6f 63 65 73 DWORD lpdwProces
3ec0: 73 4c 69 73 74 2c 0d 0a 20 20 20 20 20 44 57 4f sList,.. DWO
3ed0: 52 44 20 64 77 50 72 6f 63 65 73 73 43 6f 75 6e RD dwProcessCoun
3ee0: 74 29 3b 0d 0a 2f 2f 20 23 65 6e 64 69 66 20 2f t);..// #endif /
3ef0: 2a 20 5f 57 49 4e 33 32 5f 57 49 4e 4e 54 20 3e * _WIN32_WINNT >
3f00: 3d 20 30 78 30 35 30 31 20 2a 2f 0d 0a 0d 0a 2f = 0x0501 */..../
3f10: 2f 20 23 69 66 64 65 66 20 5f 5f 63 70 6c 75 73 / #ifdef __cplus
3f20: 70 6c 75 73 0d 0a 2f 2f 20 7d 0d 0a 2f 2f 20 23 plus..// }..// #
3f30: 65 6e 64 69 66 0d 0a 0d 0a 2f 2f 20 23 65 6e 64 endif....// #end
3f40: 69 66 20 2f 2f 20 5f 57 49 4e 43 4f 4e 5f 0d 0a if // _WINCON_..
3f50: 0d 0a ..