Hex Artifact Content

Not logged in

Artifact 5ebbf537eec215cc6f567d3de4f2ac09469f20d1:


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                                            ..