Hex Artifact Content

Not logged in

Artifact 16215bc8ad14fe5feace3f736a017d9b5065b2f4:


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