jwawincon.pas 59 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007
  1. {******************************************************************************}
  2. { }
  3. { Console Applications API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: wincon.h, released June 2000. The original Pascal }
  9. { code is: WinCon.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaWinCon.pas,v 1.10 2005/09/06 16:36:50 marquardt Exp $
  43. {$IFNDEF JWA_INCLUDEMODE}
  44. unit JwaWinCon;
  45. {$WEAKPACKAGEUNIT}
  46. {$I jediapilib.inc}
  47. interface
  48. uses
  49. JwaWinBase, JwaWinType;
  50. {$ENDIF !JWA_INCLUDEMODE}
  51. {$IFDEF JWA_INTERFACESECTION}
  52. {$HPPEMIT ''}
  53. {$HPPEMIT '#include "WinCon.h"'}
  54. {$HPPEMIT ''}
  55. type
  56. PCOORD = ^COORD;
  57. {$EXTERNALSYM PCOORD}
  58. _COORD = record
  59. X: SHORT;
  60. Y: SHORT;
  61. end;
  62. {$EXTERNALSYM _COORD}
  63. COORD = _COORD;
  64. {$EXTERNALSYM COORD}
  65. TCoord = _COORD;
  66. PSMALL_RECT = ^SMALL_RECT;
  67. {$EXTERNALSYM PSMALL_RECT}
  68. _SMALL_RECT = record
  69. Left: SHORT;
  70. Top: SHORT;
  71. Right: SHORT;
  72. Bottom: SHORT;
  73. end;
  74. {$EXTERNALSYM _SMALL_RECT}
  75. SMALL_RECT = _SMALL_RECT;
  76. {$EXTERNALSYM SMALL_RECT}
  77. TSmallRect = SMALL_RECT;
  78. PSmallRect = PSMALL_RECT;
  79. TCharUnion = record
  80. case Integer of
  81. 0: (UnicodeChar: WCHAR);
  82. 1: (AsciiChar: CHAR);
  83. end;
  84. PKEY_EVENT_RECORD = ^KEY_EVENT_RECORD;
  85. {$EXTERNALSYM PKEY_EVENT_RECORD}
  86. _KEY_EVENT_RECORD = record
  87. bKeyDown: BOOL;
  88. wRepeatCount: WORD;
  89. wVirtualKeyCode: WORD;
  90. wVirtualScanCode: WORD;
  91. uChar: TCharUnion;
  92. dwControlKeyState: DWORD;
  93. end;
  94. {$EXTERNALSYM _KEY_EVENT_RECORD}
  95. KEY_EVENT_RECORD = _KEY_EVENT_RECORD;
  96. {$EXTERNALSYM KEY_EVENT_RECORD}
  97. TKeyEventRecord = KEY_EVENT_RECORD;
  98. PKeyEventRecord = PKEY_EVENT_RECORD;
  99. //
  100. // ControlKeyState flags
  101. //
  102. const
  103. RIGHT_ALT_PRESSED = $0001; // the right alt key is pressed.
  104. {$EXTERNALSYM RIGHT_ALT_PRESSED}
  105. LEFT_ALT_PRESSED = $0002; // the left alt key is pressed.
  106. {$EXTERNALSYM LEFT_ALT_PRESSED}
  107. RIGHT_CTRL_PRESSED = $0004; // the right ctrl key is pressed.
  108. {$EXTERNALSYM RIGHT_CTRL_PRESSED}
  109. LEFT_CTRL_PRESSED = $0008; // the left ctrl key is pressed.
  110. {$EXTERNALSYM LEFT_CTRL_PRESSED}
  111. SHIFT_PRESSED = $0010; // the shift key is pressed.
  112. {$EXTERNALSYM SHIFT_PRESSED}
  113. NUMLOCK_ON = $0020; // the numlock light is on.
  114. {$EXTERNALSYM NUMLOCK_ON}
  115. SCROLLLOCK_ON = $0040; // the scrolllock light is on.
  116. {$EXTERNALSYM SCROLLLOCK_ON}
  117. CAPSLOCK_ON = $0080; // the capslock light is on.
  118. {$EXTERNALSYM CAPSLOCK_ON}
  119. ENHANCED_KEY = $0100; // the key is enhanced.
  120. {$EXTERNALSYM ENHANCED_KEY}
  121. NLS_DBCSCHAR = $00010000; // DBCS for JPN: SBCS/DBCS mode.
  122. {$EXTERNALSYM NLS_DBCSCHAR}
  123. NLS_ALPHANUMERIC = $00000000; // DBCS for JPN: Alphanumeric mode.
  124. {$EXTERNALSYM NLS_ALPHANUMERIC}
  125. NLS_KATAKANA = $00020000; // DBCS for JPN: Katakana mode.
  126. {$EXTERNALSYM NLS_KATAKANA}
  127. NLS_HIRAGANA = $00040000; // DBCS for JPN: Hiragana mode.
  128. {$EXTERNALSYM NLS_HIRAGANA}
  129. NLS_ROMAN = $00400000; // DBCS for JPN: Roman/Noroman mode.
  130. {$EXTERNALSYM NLS_ROMAN}
  131. NLS_IME_CONVERSION = $00800000; // DBCS for JPN: IME conversion.
  132. {$EXTERNALSYM NLS_IME_CONVERSION}
  133. NLS_IME_DISABLE = $20000000; // DBCS for JPN: IME enable/disable.
  134. {$EXTERNALSYM NLS_IME_DISABLE}
  135. type
  136. PMOUSE_EVENT_RECORD = ^MOUSE_EVENT_RECORD;
  137. {$EXTERNALSYM PMOUSE_EVENT_RECORD}
  138. _MOUSE_EVENT_RECORD = record
  139. dwMousePosition: COORD;
  140. dwButtonState: DWORD;
  141. dwControlKeyState: DWORD;
  142. dwEventFlags: DWORD;
  143. end;
  144. {$EXTERNALSYM _MOUSE_EVENT_RECORD}
  145. MOUSE_EVENT_RECORD = _MOUSE_EVENT_RECORD;
  146. {$EXTERNALSYM MOUSE_EVENT_RECORD}
  147. TMouseEventRecord = MOUSE_EVENT_RECORD;
  148. PMouseEventRecord = PMOUSE_EVENT_RECORD;
  149. //
  150. // ButtonState flags
  151. //
  152. const
  153. FROM_LEFT_1ST_BUTTON_PRESSED = $0001;
  154. {$EXTERNALSYM FROM_LEFT_1ST_BUTTON_PRESSED}
  155. RIGHTMOST_BUTTON_PRESSED = $0002;
  156. {$EXTERNALSYM RIGHTMOST_BUTTON_PRESSED}
  157. FROM_LEFT_2ND_BUTTON_PRESSED = $0004;
  158. {$EXTERNALSYM FROM_LEFT_2ND_BUTTON_PRESSED}
  159. FROM_LEFT_3RD_BUTTON_PRESSED = $0008;
  160. {$EXTERNALSYM FROM_LEFT_3RD_BUTTON_PRESSED}
  161. FROM_LEFT_4TH_BUTTON_PRESSED = $0010;
  162. {$EXTERNALSYM FROM_LEFT_4TH_BUTTON_PRESSED}
  163. //
  164. // EventFlags
  165. //
  166. MOUSE_MOVED = $0001;
  167. {$EXTERNALSYM MOUSE_MOVED}
  168. DOUBLE_CLICK = $0002;
  169. {$EXTERNALSYM DOUBLE_CLICK}
  170. MOUSE_WHEELED = $0004;
  171. {$EXTERNALSYM MOUSE_WHEELED}
  172. type
  173. PWINDOW_BUFFER_SIZE_RECORD = ^WINDOW_BUFFER_SIZE_RECORD;
  174. {$EXTERNALSYM PWINDOW_BUFFER_SIZE_RECORD}
  175. _WINDOW_BUFFER_SIZE_RECORD = record
  176. dwSize: COORD;
  177. end;
  178. {$EXTERNALSYM _WINDOW_BUFFER_SIZE_RECORD}
  179. WINDOW_BUFFER_SIZE_RECORD = _WINDOW_BUFFER_SIZE_RECORD;
  180. {$EXTERNALSYM WINDOW_BUFFER_SIZE_RECORD}
  181. TWindowBufferSizeRecord = WINDOW_BUFFER_SIZE_RECORD;
  182. PWindowBufferSizeRecord = PWINDOW_BUFFER_SIZE_RECORD;
  183. PMENU_EVENT_RECORD = ^MENU_EVENT_RECORD;
  184. {$EXTERNALSYM PMENU_EVENT_RECORD}
  185. _MENU_EVENT_RECORD = record
  186. dwCommandId: UINT;
  187. end;
  188. {$EXTERNALSYM _MENU_EVENT_RECORD}
  189. MENU_EVENT_RECORD = _MENU_EVENT_RECORD;
  190. {$EXTERNALSYM MENU_EVENT_RECORD}
  191. TMenuEventRecord = MENU_EVENT_RECORD;
  192. PMenuEventRecord = PMENU_EVENT_RECORD;
  193. PFOCUS_EVENT_RECORD = ^FOCUS_EVENT_RECORD;
  194. {$EXTERNALSYM PFOCUS_EVENT_RECORD}
  195. _FOCUS_EVENT_RECORD = record
  196. bSetFocus: BOOL;
  197. end;
  198. {$EXTERNALSYM _FOCUS_EVENT_RECORD}
  199. FOCUS_EVENT_RECORD = _FOCUS_EVENT_RECORD;
  200. {$EXTERNALSYM FOCUS_EVENT_RECORD}
  201. TFocusEventRecord = FOCUS_EVENT_RECORD;
  202. PFocusEventRecord = PFOCUS_EVENT_RECORD;
  203. PINPUT_RECORD = ^INPUT_RECORD;
  204. {$EXTERNALSYM PINPUT_RECORD}
  205. _INPUT_RECORD = record
  206. EventType: WORD;
  207. case Integer of
  208. 0: (KeyEvent: KEY_EVENT_RECORD);
  209. 1: (MouseEvent: MOUSE_EVENT_RECORD);
  210. 2: (WindowBufferSizeEvent: WINDOW_BUFFER_SIZE_RECORD);
  211. 3: (MenuEvent: MENU_EVENT_RECORD);
  212. 4: (FocusEvent: FOCUS_EVENT_RECORD);
  213. end;
  214. {$EXTERNALSYM _INPUT_RECORD}
  215. INPUT_RECORD = _INPUT_RECORD;
  216. {$EXTERNALSYM INPUT_RECORD}
  217. TInputRecord = INPUT_RECORD;
  218. PInputRecord = PINPUT_RECORD;
  219. //
  220. // EventType flags:
  221. //
  222. const
  223. KEY_EVENT = $0001; // Event contains key event record
  224. {$EXTERNALSYM KEY_EVENT}
  225. _MOUSE_EVENT = $0002; {Delphi: renamed} // Event contains mouse event record
  226. WINDOW_BUFFER_SIZE_EVENT = $0004; // Event contains window change event record
  227. {$EXTERNALSYM WINDOW_BUFFER_SIZE_EVENT}
  228. MENU_EVENT = $0008; // Event contains menu event record
  229. {$EXTERNALSYM MENU_EVENT}
  230. FOCUS_EVENT = $0010; // event contains focus change
  231. {$EXTERNALSYM FOCUS_EVENT}
  232. type
  233. PCHAR_INFO = ^CHAR_INFO;
  234. {$EXTERNALSYM PCHAR_INFO}
  235. _CHAR_INFO = record
  236. uChar: TCharUnion;
  237. Attributes: WORD;
  238. end;
  239. {$EXTERNALSYM _CHAR_INFO}
  240. CHAR_INFO = _CHAR_INFO;
  241. {$EXTERNALSYM CHAR_INFO}
  242. TCharInfo = CHAR_INFO;
  243. PCharInfo = PCHAR_INFO;
  244. //
  245. // Attributes flags:
  246. //
  247. const
  248. FOREGROUND_BLUE = $0001; // text color contains blue.
  249. {$EXTERNALSYM FOREGROUND_BLUE}
  250. FOREGROUND_GREEN = $0002; // text color contains green.
  251. {$EXTERNALSYM FOREGROUND_GREEN}
  252. FOREGROUND_RED = $0004; // text color contains red.
  253. {$EXTERNALSYM FOREGROUND_RED}
  254. FOREGROUND_INTENSITY = $0008; // text color is intensified.
  255. {$EXTERNALSYM FOREGROUND_INTENSITY}
  256. BACKGROUND_BLUE = $0010; // background color contains blue.
  257. {$EXTERNALSYM BACKGROUND_BLUE}
  258. BACKGROUND_GREEN = $0020; // background color contains green.
  259. {$EXTERNALSYM BACKGROUND_GREEN}
  260. BACKGROUND_RED = $0040; // background color contains red.
  261. {$EXTERNALSYM BACKGROUND_RED}
  262. BACKGROUND_INTENSITY = $0080; // background color is intensified.
  263. {$EXTERNALSYM BACKGROUND_INTENSITY}
  264. COMMON_LVB_LEADING_BYTE = $0100; // Leading Byte of DBCS
  265. {$EXTERNALSYM COMMON_LVB_LEADING_BYTE}
  266. COMMON_LVB_TRAILING_BYTE = $0200; // Trailing Byte of DBCS
  267. {$EXTERNALSYM COMMON_LVB_TRAILING_BYTE}
  268. COMMON_LVB_GRID_HORIZONTAL = $0400; // DBCS: Grid attribute: top horizontal.
  269. {$EXTERNALSYM COMMON_LVB_GRID_HORIZONTAL}
  270. COMMON_LVB_GRID_LVERTICAL = $0800; // DBCS: Grid attribute: left vertical.
  271. {$EXTERNALSYM COMMON_LVB_GRID_LVERTICAL}
  272. COMMON_LVB_GRID_RVERTICAL = $1000; // DBCS: Grid attribute: right vertical.
  273. {$EXTERNALSYM COMMON_LVB_GRID_RVERTICAL}
  274. COMMON_LVB_REVERSE_VIDEO = $4000; // DBCS: Reverse fore/back ground attribute.
  275. {$EXTERNALSYM COMMON_LVB_REVERSE_VIDEO}
  276. COMMON_LVB_UNDERSCORE = $8000; // DBCS: Underscore.
  277. {$EXTERNALSYM COMMON_LVB_UNDERSCORE}
  278. COMMON_LVB_SBCSDBCS = $0300; // SBCS or DBCS flag.
  279. {$EXTERNALSYM COMMON_LVB_SBCSDBCS}
  280. type
  281. PCONSOLE_SCREEN_BUFFER_INFO = ^CONSOLE_SCREEN_BUFFER_INFO;
  282. {$EXTERNALSYM PCONSOLE_SCREEN_BUFFER_INFO}
  283. _CONSOLE_SCREEN_BUFFER_INFO = record
  284. dwSize: COORD;
  285. dwCursorPosition: COORD;
  286. wAttributes: WORD;
  287. srWindow: SMALL_RECT;
  288. dwMaximumWindowSize: COORD;
  289. end;
  290. {$EXTERNALSYM _CONSOLE_SCREEN_BUFFER_INFO}
  291. CONSOLE_SCREEN_BUFFER_INFO = _CONSOLE_SCREEN_BUFFER_INFO;
  292. {$EXTERNALSYM CONSOLE_SCREEN_BUFFER_INFO}
  293. TConsoleScreenBufferInfo = CONSOLE_SCREEN_BUFFER_INFO;
  294. PConsoleScreenBufferInfo = PCONSOLE_SCREEN_BUFFER_INFO;
  295. PCONSOLE_CURSOR_INFO = ^CONSOLE_CURSOR_INFO;
  296. {$EXTERNALSYM PCONSOLE_CURSOR_INFO}
  297. _CONSOLE_CURSOR_INFO = record
  298. dwSize: DWORD;
  299. bVisible: BOOL;
  300. end;
  301. {$EXTERNALSYM _CONSOLE_CURSOR_INFO}
  302. CONSOLE_CURSOR_INFO = _CONSOLE_CURSOR_INFO;
  303. {$EXTERNALSYM CONSOLE_CURSOR_INFO}
  304. TConsoleCursorInfo = CONSOLE_CURSOR_INFO;
  305. PConsoleCursorInfo = PCONSOLE_CURSOR_INFO;
  306. _CONSOLE_FONT_INFO = record
  307. nFont: DWORD;
  308. dwFontSize: COORD;
  309. end;
  310. {$EXTERNALSYM _CONSOLE_FONT_INFO}
  311. CONSOLE_FONT_INFO = _CONSOLE_FONT_INFO;
  312. {$EXTERNALSYM CONSOLE_FONT_INFO}
  313. PCONSOLE_FONT_INFO = ^CONSOLE_FONT_INFO;
  314. {$EXTERNALSYM PCONSOLE_FONT_INFO}
  315. TConsoleFontInfo = CONSOLE_FONT_INFO;
  316. PConsoleFontInfo = PCONSOLE_FONT_INFO;
  317. _CONSOLE_SELECTION_INFO = record
  318. dwFlags: DWORD;
  319. dwSelectionAnchor: COORD;
  320. srSelection: SMALL_RECT;
  321. end;
  322. {$EXTERNALSYM _CONSOLE_SELECTION_INFO}
  323. CONSOLE_SELECTION_INFO = _CONSOLE_SELECTION_INFO;
  324. {$EXTERNALSYM CONSOLE_SELECTION_INFO}
  325. PCONSOLE_SELECTION_INFO = ^CONSOLE_SELECTION_INFO;
  326. {$EXTERNALSYM PCONSOLE_SELECTION_INFO}
  327. TConsoleSelectionInfo = CONSOLE_SELECTION_INFO;
  328. PConsoleSelectionInfo = PCONSOLE_SELECTION_INFO;
  329. //
  330. // Selection flags
  331. //
  332. const
  333. CONSOLE_NO_SELECTION = $0000;
  334. {$EXTERNALSYM CONSOLE_NO_SELECTION}
  335. CONSOLE_SELECTION_IN_PROGRESS = $0001; // selection has begun
  336. {$EXTERNALSYM CONSOLE_SELECTION_IN_PROGRESS}
  337. CONSOLE_SELECTION_NOT_EMPTY = $0002; // non-null select rectangle
  338. {$EXTERNALSYM CONSOLE_SELECTION_NOT_EMPTY}
  339. CONSOLE_MOUSE_SELECTION = $0004; // selecting with mouse
  340. {$EXTERNALSYM CONSOLE_MOUSE_SELECTION}
  341. CONSOLE_MOUSE_DOWN = $0008; // mouse is down
  342. {$EXTERNALSYM CONSOLE_MOUSE_DOWN}
  343. //
  344. // typedef for ctrl-c handler routines
  345. //
  346. type
  347. PHANDLER_ROUTINE = function(CtrlType: DWORD): BOOL; stdcall;
  348. {$EXTERNALSYM PHANDLER_ROUTINE}
  349. THandlerRoutine = PHANDLER_ROUTINE;
  350. const
  351. CTRL_C_EVENT = 0;
  352. {$EXTERNALSYM CTRL_C_EVENT}
  353. CTRL_BREAK_EVENT = 1;
  354. {$EXTERNALSYM CTRL_BREAK_EVENT}
  355. CTRL_CLOSE_EVENT = 2;
  356. {$EXTERNALSYM CTRL_CLOSE_EVENT}
  357. // 3 is reserved!
  358. // 4 is reserved!
  359. CTRL_LOGOFF_EVENT = 5;
  360. {$EXTERNALSYM CTRL_LOGOFF_EVENT}
  361. CTRL_SHUTDOWN_EVENT = 6;
  362. {$EXTERNALSYM CTRL_SHUTDOWN_EVENT}
  363. //
  364. // Input Mode flags:
  365. //
  366. ENABLE_PROCESSED_INPUT = $0001;
  367. {$EXTERNALSYM ENABLE_PROCESSED_INPUT}
  368. ENABLE_LINE_INPUT = $0002;
  369. {$EXTERNALSYM ENABLE_LINE_INPUT}
  370. ENABLE_ECHO_INPUT = $0004;
  371. {$EXTERNALSYM ENABLE_ECHO_INPUT}
  372. ENABLE_WINDOW_INPUT = $0008;
  373. {$EXTERNALSYM ENABLE_WINDOW_INPUT}
  374. ENABLE_MOUSE_INPUT = $0010;
  375. {$EXTERNALSYM ENABLE_MOUSE_INPUT}
  376. //
  377. // Output Mode flags:
  378. //
  379. ENABLE_PROCESSED_OUTPUT = $0001;
  380. {$EXTERNALSYM ENABLE_PROCESSED_OUTPUT}
  381. ENABLE_WRAP_AT_EOL_OUTPUT = $0002;
  382. {$EXTERNALSYM ENABLE_WRAP_AT_EOL_OUTPUT}
  383. //
  384. // direct API definitions.
  385. //
  386. function PeekConsoleInputA(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  387. nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
  388. {$EXTERNALSYM PeekConsoleInputA}
  389. function PeekConsoleInputW(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  390. nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
  391. {$EXTERNALSYM PeekConsoleInputW}
  392. function PeekConsoleInput(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  393. nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
  394. {$EXTERNALSYM PeekConsoleInput}
  395. function ReadConsoleInputA(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  396. nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
  397. {$EXTERNALSYM ReadConsoleInputA}
  398. function ReadConsoleInputW(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  399. nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
  400. {$EXTERNALSYM ReadConsoleInputW}
  401. function ReadConsoleInput(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  402. nLength: DWORD; var lpNumberOfEventsRead: DWORD): BOOL; stdcall;
  403. {$EXTERNALSYM ReadConsoleInput}
  404. function WriteConsoleInputA(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  405. nLength: DWORD; var lpNumberOfEventsWritten: DWORD): BOOL; stdcall;
  406. {$EXTERNALSYM WriteConsoleInputA}
  407. function WriteConsoleInputW(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  408. nLength: DWORD; var lpNumberOfEventsWritten: DWORD): BOOL; stdcall;
  409. {$EXTERNALSYM WriteConsoleInputW}
  410. function WriteConsoleInput(hConsoleInput: HANDLE; lpBuffer: PINPUT_RECORD;
  411. nLength: DWORD; var lpNumberOfEventsWritten: DWORD): BOOL; stdcall;
  412. {$EXTERNALSYM WriteConsoleInput}
  413. function ReadConsoleOutputA(hConsoleOutput: HANDLE; lpBuffer: PCHAR_INFO;
  414. dwBufferSize: COORD; dwBufferCoord: COORD;
  415. var lpReadRegion: SMALL_RECT): BOOL; stdcall;
  416. {$EXTERNALSYM ReadConsoleOutputA}
  417. function ReadConsoleOutputW(hConsoleOutput: HANDLE; lpBuffer: PCHAR_INFO;
  418. dwBufferSize: COORD; dwBufferCoord: COORD;
  419. var lpReadRegion: SMALL_RECT): BOOL; stdcall;
  420. {$EXTERNALSYM ReadConsoleOutputW}
  421. function ReadConsoleOutput(hConsoleOutput: HANDLE; lpBuffer: PCHAR_INFO;
  422. dwBufferSize: COORD; dwBufferCoord: COORD;
  423. var lpReadRegion: SMALL_RECT): BOOL; stdcall;
  424. {$EXTERNALSYM ReadConsoleOutput}
  425. function WriteConsoleOutputA(hConsoleOutput: HANDLE; lpBuffer: PCHAR_INFO;
  426. dwBufferSize: COORD; dwBufferCoord: COORD;
  427. var lpWriteRegion: SMALL_RECT): BOOL; stdcall;
  428. {$EXTERNALSYM WriteConsoleOutputA}
  429. function WriteConsoleOutputW(hConsoleOutput: HANDLE; lpBuffer: PCHAR_INFO;
  430. dwBufferSize: COORD; dwBufferCoord: COORD;
  431. var lpWriteRegion: SMALL_RECT): BOOL; stdcall;
  432. {$EXTERNALSYM WriteConsoleOutputW}
  433. function WriteConsoleOutput(hConsoleOutput: HANDLE; lpBuffer: PCHAR_INFO;
  434. dwBufferSize: COORD; dwBufferCoord: COORD;
  435. var lpWriteRegion: SMALL_RECT): BOOL; stdcall;
  436. {$EXTERNALSYM WriteConsoleOutput}
  437. function ReadConsoleOutputCharacterA(hConsoleOutput: HANDLE; lpCharacter: LPSTR;
  438. nLength: DWORD; dwReadCoord: COORD; var lpNumberOfCharsRead: DWORD): BOOL; stdcall;
  439. {$EXTERNALSYM ReadConsoleOutputCharacterA}
  440. function ReadConsoleOutputCharacterW(hConsoleOutput: HANDLE; lpCharacter: LPWSTR;
  441. nLength: DWORD; dwReadCoord: COORD; var lpNumberOfCharsRead: DWORD): BOOL; stdcall;
  442. {$EXTERNALSYM ReadConsoleOutputCharacterW}
  443. function ReadConsoleOutputCharacter(hConsoleOutput: HANDLE; lpCharacter: LPTSTR;
  444. nLength: DWORD; dwReadCoord: COORD; var lpNumberOfCharsRead: DWORD): BOOL; stdcall;
  445. {$EXTERNALSYM ReadConsoleOutputCharacter}
  446. function ReadConsoleOutputAttribute(hConsoleOutput: HANDLE;
  447. var lpAttribute: DWORD; nLength: DWORD; dwReadCoord: COORD;
  448. var lpNumberOfAttrsRead: DWORD): BOOL; stdcall;
  449. {$EXTERNALSYM ReadConsoleOutputAttribute}
  450. function WriteConsoleOutputCharacterA(hConsoleOutput: HANDLE;
  451. lpCharacter: LPCSTR; nLength: DWORD; dwWriteCoord: COORD;
  452. var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
  453. {$EXTERNALSYM WriteConsoleOutputCharacterA}
  454. function WriteConsoleOutputCharacterW(hConsoleOutput: HANDLE;
  455. lpCharacter: LPCWSTR; nLength: DWORD; dwWriteCoord: COORD;
  456. var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
  457. {$EXTERNALSYM WriteConsoleOutputCharacterW}
  458. function WriteConsoleOutputCharacter(hConsoleOutput: HANDLE;
  459. lpCharacter: LPCTSTR; nLength: DWORD; dwWriteCoord: COORD;
  460. var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
  461. {$EXTERNALSYM WriteConsoleOutputCharacter}
  462. function WriteConsoleOutputAttribute(hConsoleOutput: HANDLE; lpAttribute: PWORD;
  463. nLength: DWORD; dwWriteCoord: COORD; var lpNumberOfAttrsWritten: DWORD): BOOL; stdcall;
  464. {$EXTERNALSYM WriteConsoleOutputAttribute}
  465. function FillConsoleOutputCharacterA(hConsoleOutput: HANDLE; cCharacter: CHAR;
  466. nLength: DWORD; dwWriteCoord: COORD; var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
  467. {$EXTERNALSYM FillConsoleOutputCharacterA}
  468. function FillConsoleOutputCharacterW(hConsoleOutput: HANDLE; cCharacter: WCHAR;
  469. nLength: DWORD; dwWriteCoord: COORD; var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
  470. {$EXTERNALSYM FillConsoleOutputCharacterW}
  471. function FillConsoleOutputCharacter(hConsoleOutput: HANDLE; cCharacter: TCHAR;
  472. nLength: DWORD; dwWriteCoord: COORD; var lpNumberOfCharsWritten: DWORD): BOOL; stdcall;
  473. {$EXTERNALSYM FillConsoleOutputCharacter}
  474. function FillConsoleOutputAttribute(hConsoleOutput: HANDLE; wAttribute: WORD;
  475. nLength: DWORD; dwWriteCoord: COORD; var lpNumberOfAttrsWritten: DWORD): BOOL; stdcall;
  476. {$EXTERNALSYM FillConsoleOutputAttribute}
  477. function GetConsoleMode(hConsoleHandle: HANDLE; var lpMode: DWORD): BOOL; stdcall;
  478. {$EXTERNALSYM GetConsoleMode}
  479. function GetNumberOfConsoleInputEvents(hConsoleInput: HANDLE;
  480. var lpNumberOfEvents: DWORD): BOOL; stdcall;
  481. {$EXTERNALSYM GetNumberOfConsoleInputEvents}
  482. function GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE;
  483. var lpConsoleScreenBufferInfo: CONSOLE_SCREEN_BUFFER_INFO): BOOL; stdcall;
  484. {$EXTERNALSYM GetConsoleScreenBufferInfo}
  485. function GetLargestConsoleWindowSize(hConsoleOutput: HANDLE): COORD; stdcall;
  486. {$EXTERNALSYM GetLargestConsoleWindowSize}
  487. function GetConsoleCursorInfo(hConsoleOutput: HANDLE;
  488. var lpConsoleCursorInfo: CONSOLE_CURSOR_INFO): BOOL; stdcall;
  489. function GetCurrentConsoleFont(hConsoleOutput: HANDLE; bMaximumWindow: BOOL;
  490. var lpConsoleCurrentFont: CONSOLE_FONT_INFO): BOOL; stdcall;
  491. {$EXTERNALSYM GetCurrentConsoleFont}
  492. function GetConsoleFontSize(hConsoleOutput: HANDLE; nFont: DWORD): COORD; stdcall;
  493. {$EXTERNALSYM GetConsoleFontSize}
  494. function GetConsoleSelectionInfo(var lpConsoleSelectionInfo: CONSOLE_SELECTION_INFO): BOOL; stdcall;
  495. {$EXTERNALSYM GetConsoleSelectionInfo}
  496. {$EXTERNALSYM GetConsoleCursorInfo}
  497. function GetNumberOfConsoleMouseButtons(var lpNumberOfMouseButtons: DWORD): BOOL; stdcall;
  498. {$EXTERNALSYM GetNumberOfConsoleMouseButtons}
  499. function SetConsoleMode(hConsoleHandle: HANDLE; dwMode: DWORD): BOOL; stdcall;
  500. {$EXTERNALSYM SetConsoleMode}
  501. function SetConsoleActiveScreenBuffer(hConsoleOutput: HANDLE): BOOL; stdcall;
  502. {$EXTERNALSYM SetConsoleActiveScreenBuffer}
  503. function FlushConsoleInputBuffer(hConsoleInput: HANDLE): BOOL; stdcall;
  504. {$EXTERNALSYM FlushConsoleInputBuffer}
  505. function SetConsoleScreenBufferSize(hConsoleOutput: HANDLE; dwSize: COORD): BOOL; stdcall;
  506. {$EXTERNALSYM SetConsoleScreenBufferSize}
  507. function SetConsoleCursorPosition(hConsoleOutput: HANDLE; dwCursorPosition: COORD): BOOL; stdcall;
  508. {$EXTERNALSYM SetConsoleCursorPosition}
  509. function SetConsoleCursorInfo(hConsoleOutput: HANDLE;
  510. var lpConsoleCursorInfo: CONSOLE_CURSOR_INFO): BOOL; stdcall;
  511. {$EXTERNALSYM SetConsoleCursorInfo}
  512. function ScrollConsoleScreenBufferA(hConsoleOutput: HANDLE;
  513. const lpScrollRectangle: SMALL_RECT; lpClipRectangle: PSMALL_RECT;
  514. dwDestinationOrigin: COORD; const lpFill: CHAR_INFO): BOOL; stdcall;
  515. {$EXTERNALSYM ScrollConsoleScreenBufferA}
  516. function ScrollConsoleScreenBufferW(hConsoleOutput: HANDLE;
  517. const lpScrollRectangle: PSMALL_RECT; lpClipRectangle: PSMALL_RECT;
  518. dwDestinationOrigin: COORD; const lpFill: CHAR_INFO): BOOL; stdcall;
  519. {$EXTERNALSYM ScrollConsoleScreenBufferW}
  520. function ScrollConsoleScreenBuffer(hConsoleOutput: HANDLE;
  521. const lpScrollRectangle: PSMALL_RECT; lpClipRectangle: PSMALL_RECT;
  522. dwDestinationOrigin: COORD; const lpFill: CHAR_INFO): BOOL; stdcall;
  523. {$EXTERNALSYM ScrollConsoleScreenBuffer}
  524. function SetConsoleWindowInfo(hConsoleOutput: HANDLE; bAbsolute: BOOL;
  525. const lpConsoleWindow: SMALL_RECT): BOOL; stdcall;
  526. {$EXTERNALSYM SetConsoleWindowInfo}
  527. function SetConsoleTextAttribute(hConsoleOutput: HANDLE; wAttributes: WORD): BOOL; stdcall;
  528. {$EXTERNALSYM SetConsoleTextAttribute}
  529. function SetConsoleCtrlHandler(HandlerRoutine: PHANDLER_ROUTINE; Add: BOOL): BOOL; stdcall;
  530. {$EXTERNALSYM SetConsoleCtrlHandler}
  531. function GenerateConsoleCtrlEvent(dwCtrlEvent: DWORD; dwProcessGroupId: DWORD): BOOL; stdcall;
  532. {$EXTERNALSYM GenerateConsoleCtrlEvent}
  533. function AllocConsole: BOOL; stdcall;
  534. {$EXTERNALSYM AllocConsole}
  535. function FreeConsole: BOOL; stdcall;
  536. {$EXTERNALSYM FreeConsole}
  537. function AttachConsole(dwProcessId: DWORD): BOOL; stdcall;
  538. {$EXTERNALSYM AttachConsole}
  539. const
  540. ATTACH_PARENT_PROCESS = DWORD(-1);
  541. {$EXTERNALSYM ATTACH_PARENT_PROCESS}
  542. function GetConsoleTitleA(lpConsoleTitle: LPSTR; nSize: DWORD): DWORD; stdcall;
  543. {$EXTERNALSYM GetConsoleTitleA}
  544. function GetConsoleTitleW(lpConsoleTitle: LPWSTR; nSize: DWORD): DWORD; stdcall;
  545. {$EXTERNALSYM GetConsoleTitleW}
  546. function GetConsoleTitle(lpConsoleTitle: LPTSTR; nSize: DWORD): DWORD; stdcall;
  547. {$EXTERNALSYM GetConsoleTitle}
  548. function SetConsoleTitleA(lpConsoleTitle: LPCSTR): BOOL; stdcall;
  549. {$EXTERNALSYM SetConsoleTitleA}
  550. function SetConsoleTitleW(lpConsoleTitle: LPCWSTR): BOOL; stdcall;
  551. {$EXTERNALSYM SetConsoleTitleW}
  552. function SetConsoleTitle(lpConsoleTitle: LPCTSTR): BOOL; stdcall;
  553. {$EXTERNALSYM SetConsoleTitle}
  554. function ReadConsoleA(hConsoleInput: HANDLE; lpBuffer: LPVOID;
  555. nNumberOfCharsToRead: DWORD; var lpNumberOfCharsRead: DWORD;
  556. lpReserved: LPVOID): BOOL; stdcall;
  557. {$EXTERNALSYM ReadConsoleA}
  558. function ReadConsoleW(hConsoleInput: HANDLE; lpBuffer: LPVOID;
  559. nNumberOfCharsToRead: DWORD; var lpNumberOfCharsRead: DWORD;
  560. lpReserved: LPVOID): BOOL; stdcall;
  561. {$EXTERNALSYM ReadConsoleW}
  562. function ReadConsole(hConsoleInput: HANDLE; lpBuffer: LPVOID;
  563. nNumberOfCharsToRead: DWORD; var lpNumberOfCharsRead: DWORD;
  564. lpReserved: LPVOID): BOOL; stdcall;
  565. {$EXTERNALSYM ReadConsole}
  566. function WriteConsoleA(hConsoleOutput: HANDLE; lpBuffer: LPVOID;
  567. nNumberOfCharsToWrite: DWORD; var lpNumberOfCharsWritten: DWORD;
  568. lpReserved: LPVOID): BOOL; stdcall;
  569. {$EXTERNALSYM WriteConsoleA}
  570. function WriteConsoleW(hConsoleOutput: HANDLE; lpBuffer: LPVOID;
  571. nNumberOfCharsToWrite: DWORD; var lpNumberOfCharsWritten: DWORD;
  572. lpReserved: LPVOID): BOOL; stdcall;
  573. {$EXTERNALSYM WriteConsoleW}
  574. function WriteConsole(hConsoleOutput: HANDLE; lpBuffer: LPVOID;
  575. nNumberOfCharsToWrite: DWORD; var lpNumberOfCharsWritten: DWORD;
  576. lpReserved: LPVOID): BOOL; stdcall;
  577. {$EXTERNALSYM WriteConsole}
  578. const
  579. CONSOLE_TEXTMODE_BUFFER = 1;
  580. {$EXTERNALSYM CONSOLE_TEXTMODE_BUFFER}
  581. function CreateConsoleScreenBuffer(dwDesiredAccess: DWORD; dwShareMode: DWORD;
  582. lpSecurityAttributes: PSECURITY_ATTRIBUTES; dwFlags: DWORD;
  583. lpScreenBufferData: LPVOID): HANDLE; stdcall;
  584. {$EXTERNALSYM CreateConsoleScreenBuffer}
  585. function GetConsoleCP: UINT; stdcall;
  586. {$EXTERNALSYM GetConsoleCP}
  587. function SetConsoleCP(wCodePageID: UINT): BOOL; stdcall;
  588. {$EXTERNALSYM SetConsoleCP}
  589. function GetConsoleOutputCP: UINT; stdcall;
  590. {$EXTERNALSYM GetConsoleOutputCP}
  591. function SetConsoleOutputCP(wCodePageID: UINT): BOOL; stdcall;
  592. {$EXTERNALSYM SetConsoleOutputCP}
  593. const
  594. CONSOLE_FULLSCREEN = 1; // fullscreen console
  595. {$EXTERNALSYM CONSOLE_FULLSCREEN}
  596. CONSOLE_FULLSCREEN_HARDWARE = 2; // console owns the hardware
  597. {$EXTERNALSYM CONSOLE_FULLSCREEN_HARDWARE}
  598. function GetConsoleDisplayMode(var lpModeFlags: DWORD): BOOL; stdcall;
  599. {$EXTERNALSYM GetConsoleDisplayMode}
  600. function GetConsoleWindow: HWND; stdcall;
  601. {$EXTERNALSYM GetConsoleWindow}
  602. function GetConsoleProcessList(var lpdwProcessList: LPDWORD; dwProcessCount: DWORD): DWORD; stdcall;
  603. {$EXTERNALSYM GetConsoleProcessList}
  604. //
  605. // Aliasing apis.
  606. //
  607. function AddConsoleAliasA(Source, Target, ExeName: LPSTR): BOOL; stdcall;
  608. {$EXTERNALSYM AddConsoleAliasA}
  609. function AddConsoleAliasW(Source, Target, ExeName: LPWSTR): BOOL; stdcall;
  610. {$EXTERNALSYM AddConsoleAliasW}
  611. function AddConsoleAlias(Source, Target, ExeName: LPTSTR): BOOL; stdcall;
  612. {$EXTERNALSYM AddConsoleAlias}
  613. function GetConsoleAliasA(Source, TargetBuffer: LPSTR; TargetBufferLength: DWORD; ExeName: LPSTR): DWORD; stdcall;
  614. {$EXTERNALSYM GetConsoleAliasA}
  615. function GetConsoleAliasW(Source, TargetBuffer: LPWSTR; TargetBufferLength: DWORD; ExeName: LPWSTR): DWORD; stdcall;
  616. {$EXTERNALSYM GetConsoleAliasW}
  617. function GetConsoleAlias(Source, TargetBuffer: LPTSTR; TargetBufferLength: DWORD; ExeName: LPTSTR): DWORD; stdcall;
  618. {$EXTERNALSYM GetConsoleAlias}
  619. function GetConsoleAliasesLengthA(ExeName: LPSTR): DWORD; stdcall;
  620. {$EXTERNALSYM GetConsoleAliasesLengthA}
  621. function GetConsoleAliasesLengthW(ExeName: LPWSTR): DWORD; stdcall;
  622. {$EXTERNALSYM GetConsoleAliasesLengthW}
  623. function GetConsoleAliasesLength(ExeName: LPTSTR): DWORD; stdcall;
  624. {$EXTERNALSYM GetConsoleAliasesLength}
  625. function GetConsoleAliasExesLengthA: DWORD; stdcall;
  626. {$EXTERNALSYM GetConsoleAliasExesLengthA}
  627. function GetConsoleAliasExesLengthW: DWORD; stdcall;
  628. {$EXTERNALSYM GetConsoleAliasExesLengthW}
  629. function GetConsoleAliasExesLength: DWORD; stdcall;
  630. {$EXTERNALSYM GetConsoleAliasExesLength}
  631. function GetConsoleAliasesA(AliasBuffer: LPSTR; AliasBufferLength: DWORD; ExeName: LPSTR): DWORD; stdcall;
  632. {$EXTERNALSYM GetConsoleAliasesA}
  633. function GetConsoleAliasesW(AliasBuffer: LPWSTR; AliasBufferLength: DWORD; ExeName: LPWSTR): DWORD; stdcall;
  634. {$EXTERNALSYM GetConsoleAliasesW}
  635. function GetConsoleAliases(AliasBuffer: LPTSTR; AliasBufferLength: DWORD; ExeName: LPTSTR): DWORD; stdcall;
  636. {$EXTERNALSYM GetConsoleAliases}
  637. function GetConsoleAliasExesA(ExeNameBuffer: LPSTR; ExeNameBufferLength: DWORD): DWORD; stdcall;
  638. {$EXTERNALSYM GetConsoleAliasExesA}
  639. function GetConsoleAliasExesW(ExeNameBuffer: LPWSTR; ExeNameBufferLength: DWORD): DWORD; stdcall;
  640. {$EXTERNALSYM GetConsoleAliasExesW}
  641. function GetConsoleAliasExes(ExeNameBuffer: LPTSTR; ExeNameBufferLength: DWORD): DWORD; stdcall;
  642. {$EXTERNALSYM GetConsoleAliasExes}
  643. {$ENDIF JWA_INTERFACESECTION}
  644. {$IFNDEF JWA_INCLUDEMODE}
  645. implementation
  646. uses
  647. JwaWinDLLNames;
  648. {$ENDIF !JWA_INCLUDEMODE}
  649. {$IFDEF JWA_IMPLEMENTATIONSECTION}
  650. {$IFDEF DYNAMIC_LINK}
  651. var
  652. _PeekConsoleInputA: Pointer;
  653. function PeekConsoleInputA;
  654. begin
  655. GetProcedureAddress(_PeekConsoleInputA, kernel32, 'PeekConsoleInputA');
  656. asm
  657. MOV ESP, EBP
  658. POP EBP
  659. JMP [_PeekConsoleInputA]
  660. end;
  661. end;
  662. var
  663. _PeekConsoleInputW: Pointer;
  664. function PeekConsoleInputW;
  665. begin
  666. GetProcedureAddress(_PeekConsoleInputW, kernel32, 'PeekConsoleInputW');
  667. asm
  668. MOV ESP, EBP
  669. POP EBP
  670. JMP [_PeekConsoleInputW]
  671. end;
  672. end;
  673. var
  674. _PeekConsoleInput: Pointer;
  675. function PeekConsoleInput;
  676. begin
  677. GetProcedureAddress(_PeekConsoleInput, kernel32, 'PeekConsoleInput' + AWSuffix);
  678. asm
  679. MOV ESP, EBP
  680. POP EBP
  681. JMP [_PeekConsoleInput]
  682. end;
  683. end;
  684. var
  685. _ReadConsoleInputA: Pointer;
  686. function ReadConsoleInputA;
  687. begin
  688. GetProcedureAddress(_ReadConsoleInputA, kernel32, 'ReadConsoleInputA');
  689. asm
  690. MOV ESP, EBP
  691. POP EBP
  692. JMP [_ReadConsoleInputA]
  693. end;
  694. end;
  695. var
  696. _ReadConsoleInputW: Pointer;
  697. function ReadConsoleInputW;
  698. begin
  699. GetProcedureAddress(_ReadConsoleInputW, kernel32, 'ReadConsoleInputW');
  700. asm
  701. MOV ESP, EBP
  702. POP EBP
  703. JMP [_ReadConsoleInputW]
  704. end;
  705. end;
  706. var
  707. _ReadConsoleInput: Pointer;
  708. function ReadConsoleInput;
  709. begin
  710. GetProcedureAddress(_ReadConsoleInput, kernel32, 'ReadConsoleInput' + AWSuffix);
  711. asm
  712. MOV ESP, EBP
  713. POP EBP
  714. JMP [_ReadConsoleInput]
  715. end;
  716. end;
  717. var
  718. _WriteConsoleInputA: Pointer;
  719. function WriteConsoleInputA;
  720. begin
  721. GetProcedureAddress(_WriteConsoleInputA, kernel32, 'WriteConsoleInputA');
  722. asm
  723. MOV ESP, EBP
  724. POP EBP
  725. JMP [_WriteConsoleInputA]
  726. end;
  727. end;
  728. var
  729. _WriteConsoleInputW: Pointer;
  730. function WriteConsoleInputW;
  731. begin
  732. GetProcedureAddress(_WriteConsoleInputW, kernel32, 'WriteConsoleInputW');
  733. asm
  734. MOV ESP, EBP
  735. POP EBP
  736. JMP [_WriteConsoleInputW]
  737. end;
  738. end;
  739. var
  740. _WriteConsoleInput: Pointer;
  741. function WriteConsoleInput;
  742. begin
  743. GetProcedureAddress(_WriteConsoleInput, kernel32, 'WriteConsoleInput' + AWSuffix);
  744. asm
  745. MOV ESP, EBP
  746. POP EBP
  747. JMP [_WriteConsoleInput]
  748. end;
  749. end;
  750. var
  751. _ReadConsoleOutputA: Pointer;
  752. function ReadConsoleOutputA;
  753. begin
  754. GetProcedureAddress(_ReadConsoleOutputA, kernel32, 'ReadConsoleOutputA');
  755. asm
  756. MOV ESP, EBP
  757. POP EBP
  758. JMP [_ReadConsoleOutputA]
  759. end;
  760. end;
  761. var
  762. _ReadConsoleOutputW: Pointer;
  763. function ReadConsoleOutputW;
  764. begin
  765. GetProcedureAddress(_ReadConsoleOutputW, kernel32, 'ReadConsoleOutputW');
  766. asm
  767. MOV ESP, EBP
  768. POP EBP
  769. JMP [_ReadConsoleOutputW]
  770. end;
  771. end;
  772. var
  773. _ReadConsoleOutput: Pointer;
  774. function ReadConsoleOutput;
  775. begin
  776. GetProcedureAddress(_ReadConsoleOutput, kernel32, 'ReadConsoleOutput' + AWSuffix);
  777. asm
  778. MOV ESP, EBP
  779. POP EBP
  780. JMP [_ReadConsoleOutput]
  781. end;
  782. end;
  783. var
  784. _WriteConsoleOutputA: Pointer;
  785. function WriteConsoleOutputA;
  786. begin
  787. GetProcedureAddress(_WriteConsoleOutputA, kernel32, 'WriteConsoleOutputA');
  788. asm
  789. MOV ESP, EBP
  790. POP EBP
  791. JMP [_WriteConsoleOutputA]
  792. end;
  793. end;
  794. var
  795. _WriteConsoleOutputW: Pointer;
  796. function WriteConsoleOutputW;
  797. begin
  798. GetProcedureAddress(_WriteConsoleOutputW, kernel32, 'WriteConsoleOutputW');
  799. asm
  800. MOV ESP, EBP
  801. POP EBP
  802. JMP [_WriteConsoleOutputW]
  803. end;
  804. end;
  805. var
  806. _WriteConsoleOutput: Pointer;
  807. function WriteConsoleOutput;
  808. begin
  809. GetProcedureAddress(_WriteConsoleOutput, kernel32, 'WriteConsoleOutput' + AWSuffix);
  810. asm
  811. MOV ESP, EBP
  812. POP EBP
  813. JMP [_WriteConsoleOutput]
  814. end;
  815. end;
  816. var
  817. _ReadConsoleOutputCharacterA: Pointer;
  818. function ReadConsoleOutputCharacterA;
  819. begin
  820. GetProcedureAddress(_ReadConsoleOutputCharacterA, kernel32, 'ReadConsoleOutputCharacterA');
  821. asm
  822. MOV ESP, EBP
  823. POP EBP
  824. JMP [_ReadConsoleOutputCharacterA]
  825. end;
  826. end;
  827. var
  828. _ReadConsoleOutputCharacterW: Pointer;
  829. function ReadConsoleOutputCharacterW;
  830. begin
  831. GetProcedureAddress(_ReadConsoleOutputCharacterW, kernel32, 'ReadConsoleOutputCharacterW');
  832. asm
  833. MOV ESP, EBP
  834. POP EBP
  835. JMP [_ReadConsoleOutputCharacterW]
  836. end;
  837. end;
  838. var
  839. _ReadConsoleOutputCharacter: Pointer;
  840. function ReadConsoleOutputCharacter;
  841. begin
  842. GetProcedureAddress(_ReadConsoleOutputCharacter, kernel32, 'ReadConsoleOutputCharacter' + AWSuffix);
  843. asm
  844. MOV ESP, EBP
  845. POP EBP
  846. JMP [_ReadConsoleOutputCharacter]
  847. end;
  848. end;
  849. var
  850. _ReadConsoleOutputAttribute: Pointer;
  851. function ReadConsoleOutputAttribute;
  852. begin
  853. GetProcedureAddress(_ReadConsoleOutputAttribute, kernel32, 'ReadConsoleOutputAttribute');
  854. asm
  855. MOV ESP, EBP
  856. POP EBP
  857. JMP [_ReadConsoleOutputAttribute]
  858. end;
  859. end;
  860. var
  861. _WriteConsoleOutputCharacterA: Pointer;
  862. function WriteConsoleOutputCharacterA;
  863. begin
  864. GetProcedureAddress(_WriteConsoleOutputCharacterA, kernel32, 'WriteConsoleOutputCharacterA');
  865. asm
  866. MOV ESP, EBP
  867. POP EBP
  868. JMP [_WriteConsoleOutputCharacterA]
  869. end;
  870. end;
  871. var
  872. _WriteConsoleOutputCharacterW: Pointer;
  873. function WriteConsoleOutputCharacterW;
  874. begin
  875. GetProcedureAddress(_WriteConsoleOutputCharacterW, kernel32, 'WriteConsoleOutputCharacterW');
  876. asm
  877. MOV ESP, EBP
  878. POP EBP
  879. JMP [_WriteConsoleOutputCharacterW]
  880. end;
  881. end;
  882. var
  883. _WriteConsoleOutputCharacter: Pointer;
  884. function WriteConsoleOutputCharacter;
  885. begin
  886. GetProcedureAddress(_WriteConsoleOutputCharacter, kernel32, 'WriteConsoleOutputCharacter' + AWSuffix);
  887. asm
  888. MOV ESP, EBP
  889. POP EBP
  890. JMP [_WriteConsoleOutputCharacter]
  891. end;
  892. end;
  893. var
  894. _WriteConsoleOutputAttribute: Pointer;
  895. function WriteConsoleOutputAttribute;
  896. begin
  897. GetProcedureAddress(_WriteConsoleOutputAttribute, kernel32, 'WriteConsoleOutputAttribute');
  898. asm
  899. MOV ESP, EBP
  900. POP EBP
  901. JMP [_WriteConsoleOutputAttribute]
  902. end;
  903. end;
  904. var
  905. _FillConsoleOutputCharacterA: Pointer;
  906. function FillConsoleOutputCharacterA;
  907. begin
  908. GetProcedureAddress(_FillConsoleOutputCharacterA, kernel32, 'FillConsoleOutputCharacterA');
  909. asm
  910. MOV ESP, EBP
  911. POP EBP
  912. JMP [_FillConsoleOutputCharacterA]
  913. end;
  914. end;
  915. var
  916. _FillConsoleOutputCharacterW: Pointer;
  917. function FillConsoleOutputCharacterW;
  918. begin
  919. GetProcedureAddress(_FillConsoleOutputCharacterW, kernel32, 'FillConsoleOutputCharacterW');
  920. asm
  921. MOV ESP, EBP
  922. POP EBP
  923. JMP [_FillConsoleOutputCharacterW]
  924. end;
  925. end;
  926. var
  927. _FillConsoleOutputCharacter: Pointer;
  928. function FillConsoleOutputCharacter;
  929. begin
  930. GetProcedureAddress(_FillConsoleOutputCharacter, kernel32, 'FillConsoleOutputCharacter' + AWSuffix);
  931. asm
  932. MOV ESP, EBP
  933. POP EBP
  934. JMP [_FillConsoleOutputCharacter]
  935. end;
  936. end;
  937. var
  938. _FillConsoleOutputAttribute: Pointer;
  939. function FillConsoleOutputAttribute;
  940. begin
  941. GetProcedureAddress(_FillConsoleOutputAttribute, kernel32, 'FillConsoleOutputAttribute');
  942. asm
  943. MOV ESP, EBP
  944. POP EBP
  945. JMP [_FillConsoleOutputAttribute]
  946. end;
  947. end;
  948. var
  949. _GetConsoleMode: Pointer;
  950. function GetConsoleMode;
  951. begin
  952. GetProcedureAddress(_GetConsoleMode, kernel32, 'GetConsoleMode');
  953. asm
  954. MOV ESP, EBP
  955. POP EBP
  956. JMP [_GetConsoleMode]
  957. end;
  958. end;
  959. var
  960. _GetNumberOfConsoleInputEvents: Pointer;
  961. function GetNumberOfConsoleInputEvents;
  962. begin
  963. GetProcedureAddress(_GetNumberOfConsoleInputEvents, kernel32, 'GetNumberOfConsoleInputEvents');
  964. asm
  965. MOV ESP, EBP
  966. POP EBP
  967. JMP [_GetNumberOfConsoleInputEvents]
  968. end;
  969. end;
  970. var
  971. _GetConsoleScreenBufferInfo: Pointer;
  972. function GetConsoleScreenBufferInfo;
  973. begin
  974. GetProcedureAddress(_GetConsoleScreenBufferInfo, kernel32, 'GetConsoleScreenBufferInfo');
  975. asm
  976. MOV ESP, EBP
  977. POP EBP
  978. JMP [_GetConsoleScreenBufferInfo]
  979. end;
  980. end;
  981. var
  982. _GetLargestConsoleWindowSize: Pointer;
  983. function GetLargestConsoleWindowSize;
  984. begin
  985. GetProcedureAddress(_GetLargestConsoleWindowSize, kernel32, 'GetLargestConsoleWindowSize');
  986. asm
  987. MOV ESP, EBP
  988. POP EBP
  989. JMP [_GetLargestConsoleWindowSize]
  990. end;
  991. end;
  992. var
  993. _GetConsoleCursorInfo: Pointer;
  994. function GetConsoleCursorInfo;
  995. begin
  996. GetProcedureAddress(_GetConsoleCursorInfo, kernel32, 'GetConsoleCursorInfo');
  997. asm
  998. MOV ESP, EBP
  999. POP EBP
  1000. JMP [_GetConsoleCursorInfo]
  1001. end;
  1002. end;
  1003. var
  1004. _GetCurrentConsoleFont: Pointer;
  1005. function GetCurrentConsoleFont;
  1006. begin
  1007. GetProcedureAddress(_GetCurrentConsoleFont, kernel32, 'GetCurrentConsoleFont');
  1008. asm
  1009. MOV ESP, EBP
  1010. POP EBP
  1011. JMP [_GetCurrentConsoleFont]
  1012. end;
  1013. end;
  1014. var
  1015. _GetConsoleFontSize: Pointer;
  1016. function GetConsoleFontSize;
  1017. begin
  1018. GetProcedureAddress(_GetConsoleFontSize, kernel32, 'GetConsoleFontSize');
  1019. asm
  1020. MOV ESP, EBP
  1021. POP EBP
  1022. JMP [_GetConsoleFontSize]
  1023. end;
  1024. end;
  1025. var
  1026. _GetConsoleSelectionInfo: Pointer;
  1027. function GetConsoleSelectionInfo;
  1028. begin
  1029. GetProcedureAddress(_GetConsoleSelectionInfo, kernel32, 'GetConsoleSelectionInfo');
  1030. asm
  1031. MOV ESP, EBP
  1032. POP EBP
  1033. JMP [_GetConsoleSelectionInfo]
  1034. end;
  1035. end;
  1036. var
  1037. _GetNumberOfConsoleMouseButtons: Pointer;
  1038. function GetNumberOfConsoleMouseButtons;
  1039. begin
  1040. GetProcedureAddress(_GetNumberOfConsoleMouseButtons, kernel32, 'GetNumberOfConsoleMouseButtons');
  1041. asm
  1042. MOV ESP, EBP
  1043. POP EBP
  1044. JMP [_GetNumberOfConsoleMouseButtons]
  1045. end;
  1046. end;
  1047. var
  1048. _SetConsoleMode: Pointer;
  1049. function SetConsoleMode;
  1050. begin
  1051. GetProcedureAddress(_SetConsoleMode, kernel32, 'SetConsoleMode');
  1052. asm
  1053. MOV ESP, EBP
  1054. POP EBP
  1055. JMP [_SetConsoleMode]
  1056. end;
  1057. end;
  1058. var
  1059. _SetConsoleActiveScreenBuffer: Pointer;
  1060. function SetConsoleActiveScreenBuffer;
  1061. begin
  1062. GetProcedureAddress(_SetConsoleActiveScreenBuffer, kernel32, 'SetConsoleActiveScreenBuffer');
  1063. asm
  1064. MOV ESP, EBP
  1065. POP EBP
  1066. JMP [_SetConsoleActiveScreenBuffer]
  1067. end;
  1068. end;
  1069. var
  1070. _FlushConsoleInputBuffer: Pointer;
  1071. function FlushConsoleInputBuffer;
  1072. begin
  1073. GetProcedureAddress(_FlushConsoleInputBuffer, kernel32, 'FlushConsoleInputBuffer');
  1074. asm
  1075. MOV ESP, EBP
  1076. POP EBP
  1077. JMP [_FlushConsoleInputBuffer]
  1078. end;
  1079. end;
  1080. var
  1081. _SetConsoleScreenBufferSize: Pointer;
  1082. function SetConsoleScreenBufferSize;
  1083. begin
  1084. GetProcedureAddress(_SetConsoleScreenBufferSize, kernel32, 'SetConsoleScreenBufferSize');
  1085. asm
  1086. MOV ESP, EBP
  1087. POP EBP
  1088. JMP [_SetConsoleScreenBufferSize]
  1089. end;
  1090. end;
  1091. var
  1092. _SetConsoleCursorPosition: Pointer;
  1093. function SetConsoleCursorPosition;
  1094. begin
  1095. GetProcedureAddress(_SetConsoleCursorPosition, kernel32, 'SetConsoleCursorPosition');
  1096. asm
  1097. MOV ESP, EBP
  1098. POP EBP
  1099. JMP [_SetConsoleCursorPosition]
  1100. end;
  1101. end;
  1102. var
  1103. _SetConsoleCursorInfo: Pointer;
  1104. function SetConsoleCursorInfo;
  1105. begin
  1106. GetProcedureAddress(_SetConsoleCursorInfo, kernel32, 'SetConsoleCursorInfo');
  1107. asm
  1108. MOV ESP, EBP
  1109. POP EBP
  1110. JMP [_SetConsoleCursorInfo]
  1111. end;
  1112. end;
  1113. var
  1114. _ScrollConsoleScreenBufferA: Pointer;
  1115. function ScrollConsoleScreenBufferA;
  1116. begin
  1117. GetProcedureAddress(_ScrollConsoleScreenBufferA, kernel32, 'ScrollConsoleScreenBufferA');
  1118. asm
  1119. MOV ESP, EBP
  1120. POP EBP
  1121. JMP [_ScrollConsoleScreenBufferA]
  1122. end;
  1123. end;
  1124. var
  1125. _ScrollConsoleScreenBufferW: Pointer;
  1126. function ScrollConsoleScreenBufferW;
  1127. begin
  1128. GetProcedureAddress(_ScrollConsoleScreenBufferW, kernel32, 'ScrollConsoleScreenBufferW');
  1129. asm
  1130. MOV ESP, EBP
  1131. POP EBP
  1132. JMP [_ScrollConsoleScreenBufferW]
  1133. end;
  1134. end;
  1135. var
  1136. _ScrollConsoleScreenBuffer: Pointer;
  1137. function ScrollConsoleScreenBuffer;
  1138. begin
  1139. GetProcedureAddress(_ScrollConsoleScreenBuffer, kernel32, 'ScrollConsoleScreenBuffer' + AWSuffix);
  1140. asm
  1141. MOV ESP, EBP
  1142. POP EBP
  1143. JMP [_ScrollConsoleScreenBuffer]
  1144. end;
  1145. end;
  1146. var
  1147. _SetConsoleWindowInfo: Pointer;
  1148. function SetConsoleWindowInfo;
  1149. begin
  1150. GetProcedureAddress(_SetConsoleWindowInfo, kernel32, 'SetConsoleWindowInfo');
  1151. asm
  1152. MOV ESP, EBP
  1153. POP EBP
  1154. JMP [_SetConsoleWindowInfo]
  1155. end;
  1156. end;
  1157. var
  1158. _SetConsoleTextAttribute: Pointer;
  1159. function SetConsoleTextAttribute;
  1160. begin
  1161. GetProcedureAddress(_SetConsoleTextAttribute, kernel32, 'SetConsoleTextAttribute');
  1162. asm
  1163. MOV ESP, EBP
  1164. POP EBP
  1165. JMP [_SetConsoleTextAttribute]
  1166. end;
  1167. end;
  1168. var
  1169. _SetConsoleCtrlHandler: Pointer;
  1170. function SetConsoleCtrlHandler;
  1171. begin
  1172. GetProcedureAddress(_SetConsoleCtrlHandler, kernel32, 'SetConsoleCtrlHandler');
  1173. asm
  1174. MOV ESP, EBP
  1175. POP EBP
  1176. JMP [_SetConsoleCtrlHandler]
  1177. end;
  1178. end;
  1179. var
  1180. _GenerateConsoleCtrlEvent: Pointer;
  1181. function GenerateConsoleCtrlEvent;
  1182. begin
  1183. GetProcedureAddress(_GenerateConsoleCtrlEvent, kernel32, 'GenerateConsoleCtrlEvent');
  1184. asm
  1185. MOV ESP, EBP
  1186. POP EBP
  1187. JMP [_GenerateConsoleCtrlEvent]
  1188. end;
  1189. end;
  1190. var
  1191. _AllocConsole: Pointer;
  1192. function AllocConsole;
  1193. begin
  1194. GetProcedureAddress(_AllocConsole, kernel32, 'AllocConsole');
  1195. asm
  1196. MOV ESP, EBP
  1197. POP EBP
  1198. JMP [_AllocConsole]
  1199. end;
  1200. end;
  1201. var
  1202. _FreeConsole: Pointer;
  1203. function FreeConsole;
  1204. begin
  1205. GetProcedureAddress(_FreeConsole, kernel32, 'FreeConsole');
  1206. asm
  1207. MOV ESP, EBP
  1208. POP EBP
  1209. JMP [_FreeConsole]
  1210. end;
  1211. end;
  1212. var
  1213. _AttachConsole: Pointer;
  1214. function AttachConsole;
  1215. begin
  1216. GetProcedureAddress(_AttachConsole, kernel32, 'AttachConsole');
  1217. asm
  1218. MOV ESP, EBP
  1219. POP EBP
  1220. JMP [_AttachConsole]
  1221. end;
  1222. end;
  1223. var
  1224. _GetConsoleTitleA: Pointer;
  1225. function GetConsoleTitleA;
  1226. begin
  1227. GetProcedureAddress(_GetConsoleTitleA, kernel32, 'GetConsoleTitleA');
  1228. asm
  1229. MOV ESP, EBP
  1230. POP EBP
  1231. JMP [_GetConsoleTitleA]
  1232. end;
  1233. end;
  1234. var
  1235. _GetConsoleTitleW: Pointer;
  1236. function GetConsoleTitleW;
  1237. begin
  1238. GetProcedureAddress(_GetConsoleTitleW, kernel32, 'GetConsoleTitleW');
  1239. asm
  1240. MOV ESP, EBP
  1241. POP EBP
  1242. JMP [_GetConsoleTitleW]
  1243. end;
  1244. end;
  1245. var
  1246. _GetConsoleTitle: Pointer;
  1247. function GetConsoleTitle;
  1248. begin
  1249. GetProcedureAddress(_GetConsoleTitle, kernel32, 'GetConsoleTitle' + AWSuffix);
  1250. asm
  1251. MOV ESP, EBP
  1252. POP EBP
  1253. JMP [_GetConsoleTitle]
  1254. end;
  1255. end;
  1256. var
  1257. _SetConsoleTitleA: Pointer;
  1258. function SetConsoleTitleA;
  1259. begin
  1260. GetProcedureAddress(_SetConsoleTitleA, kernel32, 'SetConsoleTitleA');
  1261. asm
  1262. MOV ESP, EBP
  1263. POP EBP
  1264. JMP [_SetConsoleTitleA]
  1265. end;
  1266. end;
  1267. var
  1268. _SetConsoleTitleW: Pointer;
  1269. function SetConsoleTitleW;
  1270. begin
  1271. GetProcedureAddress(_SetConsoleTitleW, kernel32, 'SetConsoleTitleW');
  1272. asm
  1273. MOV ESP, EBP
  1274. POP EBP
  1275. JMP [_SetConsoleTitleW]
  1276. end;
  1277. end;
  1278. var
  1279. _SetConsoleTitle: Pointer;
  1280. function SetConsoleTitle;
  1281. begin
  1282. GetProcedureAddress(_SetConsoleTitle, kernel32, 'SetConsoleTitle' + AWSuffix);
  1283. asm
  1284. MOV ESP, EBP
  1285. POP EBP
  1286. JMP [_SetConsoleTitle]
  1287. end;
  1288. end;
  1289. var
  1290. _ReadConsoleA: Pointer;
  1291. function ReadConsoleA;
  1292. begin
  1293. GetProcedureAddress(_ReadConsoleA, kernel32, 'ReadConsoleA');
  1294. asm
  1295. MOV ESP, EBP
  1296. POP EBP
  1297. JMP [_ReadConsoleA]
  1298. end;
  1299. end;
  1300. var
  1301. _ReadConsoleW: Pointer;
  1302. function ReadConsoleW;
  1303. begin
  1304. GetProcedureAddress(_ReadConsoleW, kernel32, 'ReadConsoleW');
  1305. asm
  1306. MOV ESP, EBP
  1307. POP EBP
  1308. JMP [_ReadConsoleW]
  1309. end;
  1310. end;
  1311. var
  1312. _ReadConsole: Pointer;
  1313. function ReadConsole;
  1314. begin
  1315. GetProcedureAddress(_ReadConsole, kernel32, 'ReadConsole' + AWSuffix);
  1316. asm
  1317. MOV ESP, EBP
  1318. POP EBP
  1319. JMP [_ReadConsole]
  1320. end;
  1321. end;
  1322. var
  1323. _WriteConsoleA: Pointer;
  1324. function WriteConsoleA;
  1325. begin
  1326. GetProcedureAddress(_WriteConsoleA, kernel32, 'WriteConsoleA');
  1327. asm
  1328. MOV ESP, EBP
  1329. POP EBP
  1330. JMP [_WriteConsoleA]
  1331. end;
  1332. end;
  1333. var
  1334. _WriteConsoleW: Pointer;
  1335. function WriteConsoleW;
  1336. begin
  1337. GetProcedureAddress(_WriteConsoleW, kernel32, 'WriteConsoleW');
  1338. asm
  1339. MOV ESP, EBP
  1340. POP EBP
  1341. JMP [_WriteConsoleW]
  1342. end;
  1343. end;
  1344. var
  1345. _WriteConsole: Pointer;
  1346. function WriteConsole;
  1347. begin
  1348. GetProcedureAddress(_WriteConsole, kernel32, 'WriteConsole' + AWSuffix);
  1349. asm
  1350. MOV ESP, EBP
  1351. POP EBP
  1352. JMP [_WriteConsole]
  1353. end;
  1354. end;
  1355. var
  1356. _CreateConsoleScreenBuffer: Pointer;
  1357. function CreateConsoleScreenBuffer;
  1358. begin
  1359. GetProcedureAddress(_CreateConsoleScreenBuffer, kernel32, 'CreateConsoleScreenBuffer');
  1360. asm
  1361. MOV ESP, EBP
  1362. POP EBP
  1363. JMP [_CreateConsoleScreenBuffer]
  1364. end;
  1365. end;
  1366. var
  1367. _GetConsoleCP: Pointer;
  1368. function GetConsoleCP;
  1369. begin
  1370. GetProcedureAddress(_GetConsoleCP, kernel32, 'GetConsoleCP');
  1371. asm
  1372. MOV ESP, EBP
  1373. POP EBP
  1374. JMP [_GetConsoleCP]
  1375. end;
  1376. end;
  1377. var
  1378. _SetConsoleCP: Pointer;
  1379. function SetConsoleCP;
  1380. begin
  1381. GetProcedureAddress(_SetConsoleCP, kernel32, 'SetConsoleCP');
  1382. asm
  1383. MOV ESP, EBP
  1384. POP EBP
  1385. JMP [_SetConsoleCP]
  1386. end;
  1387. end;
  1388. var
  1389. _GetConsoleOutputCP: Pointer;
  1390. function GetConsoleOutputCP;
  1391. begin
  1392. GetProcedureAddress(_GetConsoleOutputCP, kernel32, 'GetConsoleOutputCP');
  1393. asm
  1394. MOV ESP, EBP
  1395. POP EBP
  1396. JMP [_GetConsoleOutputCP]
  1397. end;
  1398. end;
  1399. var
  1400. _SetConsoleOutputCP: Pointer;
  1401. function SetConsoleOutputCP;
  1402. begin
  1403. GetProcedureAddress(_SetConsoleOutputCP, kernel32, 'SetConsoleOutputCP');
  1404. asm
  1405. MOV ESP, EBP
  1406. POP EBP
  1407. JMP [_SetConsoleOutputCP]
  1408. end;
  1409. end;
  1410. var
  1411. _GetConsoleDisplayMode: Pointer;
  1412. function GetConsoleDisplayMode;
  1413. begin
  1414. GetProcedureAddress(_GetConsoleDisplayMode, kernel32, 'GetConsoleDisplayMode');
  1415. asm
  1416. MOV ESP, EBP
  1417. POP EBP
  1418. JMP [_GetConsoleDisplayMode]
  1419. end;
  1420. end;
  1421. var
  1422. _GetConsoleWindow: Pointer;
  1423. function GetConsoleWindow;
  1424. begin
  1425. GetProcedureAddress(_GetConsoleWindow, kernel32, 'GetConsoleWindow');
  1426. asm
  1427. MOV ESP, EBP
  1428. POP EBP
  1429. JMP [_GetConsoleWindow]
  1430. end;
  1431. end;
  1432. var
  1433. _GetConsoleProcessList: Pointer;
  1434. function GetConsoleProcessList;
  1435. begin
  1436. GetProcedureAddress(_GetConsoleProcessList, kernel32, 'GetConsoleProcessList');
  1437. asm
  1438. MOV ESP, EBP
  1439. POP EBP
  1440. JMP [_GetConsoleProcessList]
  1441. end;
  1442. end;
  1443. var
  1444. _AddConsoleAliasA: Pointer;
  1445. function AddConsoleAliasA;
  1446. begin
  1447. GetProcedureAddress(_AddConsoleAliasA, kernel32, 'AddConsoleAliasA');
  1448. asm
  1449. MOV ESP, EBP
  1450. POP EBP
  1451. JMP [_AddConsoleAliasA]
  1452. end;
  1453. end;
  1454. var
  1455. _AddConsoleAliasW: Pointer;
  1456. function AddConsoleAliasW;
  1457. begin
  1458. GetProcedureAddress(_AddConsoleAliasW, kernel32, 'AddConsoleAliasW');
  1459. asm
  1460. MOV ESP, EBP
  1461. POP EBP
  1462. JMP [_AddConsoleAliasW]
  1463. end;
  1464. end;
  1465. var
  1466. _AddConsoleAlias: Pointer;
  1467. function AddConsoleAlias;
  1468. begin
  1469. GetProcedureAddress(_AddConsoleAlias, kernel32, 'AddConsoleAlias' + AWSuffix);
  1470. asm
  1471. MOV ESP, EBP
  1472. POP EBP
  1473. JMP [_AddConsoleAlias]
  1474. end;
  1475. end;
  1476. var
  1477. _GetConsoleAliasA: Pointer;
  1478. function GetConsoleAliasA;
  1479. begin
  1480. GetProcedureAddress(_GetConsoleAliasA, kernel32, 'GetConsoleAliasA');
  1481. asm
  1482. MOV ESP, EBP
  1483. POP EBP
  1484. JMP [_GetConsoleAliasA]
  1485. end;
  1486. end;
  1487. var
  1488. _GetConsoleAliasW: Pointer;
  1489. function GetConsoleAliasW;
  1490. begin
  1491. GetProcedureAddress(_GetConsoleAliasW, kernel32, 'GetConsoleAliasW');
  1492. asm
  1493. MOV ESP, EBP
  1494. POP EBP
  1495. JMP [_GetConsoleAliasW]
  1496. end;
  1497. end;
  1498. var
  1499. _GetConsoleAlias: Pointer;
  1500. function GetConsoleAlias;
  1501. begin
  1502. GetProcedureAddress(_GetConsoleAlias, kernel32, 'GetConsoleAlias' + AWSuffix);
  1503. asm
  1504. MOV ESP, EBP
  1505. POP EBP
  1506. JMP [_GetConsoleAlias]
  1507. end;
  1508. end;
  1509. var
  1510. _GetConsoleAliasesLengthA: Pointer;
  1511. function GetConsoleAliasesLengthA;
  1512. begin
  1513. GetProcedureAddress(_GetConsoleAliasesLengthA, kernel32, 'GetConsoleAliasesLengthA');
  1514. asm
  1515. MOV ESP, EBP
  1516. POP EBP
  1517. JMP [_GetConsoleAliasesLengthA]
  1518. end;
  1519. end;
  1520. var
  1521. _GetConsoleAliasesLengthW: Pointer;
  1522. function GetConsoleAliasesLengthW;
  1523. begin
  1524. GetProcedureAddress(_GetConsoleAliasesLengthW, kernel32, 'GetConsoleAliasesLengthW');
  1525. asm
  1526. MOV ESP, EBP
  1527. POP EBP
  1528. JMP [_GetConsoleAliasesLengthW]
  1529. end;
  1530. end;
  1531. var
  1532. _GetConsoleAliasesLength: Pointer;
  1533. function GetConsoleAliasesLength;
  1534. begin
  1535. GetProcedureAddress(_GetConsoleAliasesLength, kernel32, 'GetConsoleAliasesLength' + AWSuffix);
  1536. asm
  1537. MOV ESP, EBP
  1538. POP EBP
  1539. JMP [_GetConsoleAliasesLength]
  1540. end;
  1541. end;
  1542. var
  1543. _GetConsoleAliasExesLengthA: Pointer;
  1544. function GetConsoleAliasExesLengthA;
  1545. begin
  1546. GetProcedureAddress(_GetConsoleAliasExesLengthA, kernel32, 'GetConsoleAliasExesLengthA');
  1547. asm
  1548. MOV ESP, EBP
  1549. POP EBP
  1550. JMP [_GetConsoleAliasExesLengthA]
  1551. end;
  1552. end;
  1553. var
  1554. _GetConsoleAliasExesLengthW: Pointer;
  1555. function GetConsoleAliasExesLengthW;
  1556. begin
  1557. GetProcedureAddress(_GetConsoleAliasExesLengthW, kernel32, 'GetConsoleAliasExesLengthW');
  1558. asm
  1559. MOV ESP, EBP
  1560. POP EBP
  1561. JMP [_GetConsoleAliasExesLengthW]
  1562. end;
  1563. end;
  1564. var
  1565. _GetConsoleAliasExesLength: Pointer;
  1566. function GetConsoleAliasExesLength;
  1567. begin
  1568. GetProcedureAddress(_GetConsoleAliasExesLength, kernel32, 'GetConsoleAliasExesLength' + AWSuffix);
  1569. asm
  1570. MOV ESP, EBP
  1571. POP EBP
  1572. JMP [_GetConsoleAliasExesLength]
  1573. end;
  1574. end;
  1575. var
  1576. _GetConsoleAliasesA: Pointer;
  1577. function GetConsoleAliasesA;
  1578. begin
  1579. GetProcedureAddress(_GetConsoleAliasesA, kernel32, 'GetConsoleAliasesA');
  1580. asm
  1581. MOV ESP, EBP
  1582. POP EBP
  1583. JMP [_GetConsoleAliasesA]
  1584. end;
  1585. end;
  1586. var
  1587. _GetConsoleAliasesW: Pointer;
  1588. function GetConsoleAliasesW;
  1589. begin
  1590. GetProcedureAddress(_GetConsoleAliasesW, kernel32, 'GetConsoleAliasesW');
  1591. asm
  1592. MOV ESP, EBP
  1593. POP EBP
  1594. JMP [_GetConsoleAliasesW]
  1595. end;
  1596. end;
  1597. var
  1598. _GetConsoleAliases: Pointer;
  1599. function GetConsoleAliases;
  1600. begin
  1601. GetProcedureAddress(_GetConsoleAliases, kernel32, 'GetConsoleAliases' + AWSuffix);
  1602. asm
  1603. MOV ESP, EBP
  1604. POP EBP
  1605. JMP [_GetConsoleAliases]
  1606. end;
  1607. end;
  1608. var
  1609. _GetConsoleAliasExesA: Pointer;
  1610. function GetConsoleAliasExesA;
  1611. begin
  1612. GetProcedureAddress(_GetConsoleAliasExesA, kernel32, 'GetConsoleAliasExesA');
  1613. asm
  1614. MOV ESP, EBP
  1615. POP EBP
  1616. JMP [_GetConsoleAliasExesA]
  1617. end;
  1618. end;
  1619. var
  1620. _GetConsoleAliasExesW: Pointer;
  1621. function GetConsoleAliasExesW;
  1622. begin
  1623. GetProcedureAddress(_GetConsoleAliasExesW, kernel32, 'GetConsoleAliasExesW');
  1624. asm
  1625. MOV ESP, EBP
  1626. POP EBP
  1627. JMP [_GetConsoleAliasExesW]
  1628. end;
  1629. end;
  1630. var
  1631. _GetConsoleAliasExes: Pointer;
  1632. function GetConsoleAliasExes;
  1633. begin
  1634. GetProcedureAddress(_GetConsoleAliasExes, kernel32, 'GetConsoleAliasExes' + AWSuffix);
  1635. asm
  1636. MOV ESP, EBP
  1637. POP EBP
  1638. JMP [_GetConsoleAliasExes]
  1639. end;
  1640. end;
  1641. {$ELSE}
  1642. function PeekConsoleInputA; external kernel32 name 'PeekConsoleInputA';
  1643. function PeekConsoleInputW; external kernel32 name 'PeekConsoleInputW';
  1644. function PeekConsoleInput; external kernel32 name 'PeekConsoleInput' + AWSuffix;
  1645. function ReadConsoleInputA; external kernel32 name 'ReadConsoleInputA';
  1646. function ReadConsoleInputW; external kernel32 name 'ReadConsoleInputW';
  1647. function ReadConsoleInput; external kernel32 name 'ReadConsoleInput' + AWSuffix;
  1648. function WriteConsoleInputA; external kernel32 name 'WriteConsoleInputA';
  1649. function WriteConsoleInputW; external kernel32 name 'WriteConsoleInputW';
  1650. function WriteConsoleInput; external kernel32 name 'WriteConsoleInput' + AWSuffix;
  1651. function ReadConsoleOutputA; external kernel32 name 'ReadConsoleOutputA';
  1652. function ReadConsoleOutputW; external kernel32 name 'ReadConsoleOutputW';
  1653. function ReadConsoleOutput; external kernel32 name 'ReadConsoleOutput' + AWSuffix;
  1654. function WriteConsoleOutputA; external kernel32 name 'WriteConsoleOutputA';
  1655. function WriteConsoleOutputW; external kernel32 name 'WriteConsoleOutputW';
  1656. function WriteConsoleOutput; external kernel32 name 'WriteConsoleOutput' + AWSuffix;
  1657. function ReadConsoleOutputCharacterA; external kernel32 name 'ReadConsoleOutputCharacterA';
  1658. function ReadConsoleOutputCharacterW; external kernel32 name 'ReadConsoleOutputCharacterW';
  1659. function ReadConsoleOutputCharacter; external kernel32 name 'ReadConsoleOutputCharacter' + AWSuffix;
  1660. function ReadConsoleOutputAttribute; external kernel32 name 'ReadConsoleOutputAttribute';
  1661. function WriteConsoleOutputCharacterA; external kernel32 name 'WriteConsoleOutputCharacterA';
  1662. function WriteConsoleOutputCharacterW; external kernel32 name 'WriteConsoleOutputCharacterW';
  1663. function WriteConsoleOutputCharacter; external kernel32 name 'WriteConsoleOutputCharacter' + AWSuffix;
  1664. function WriteConsoleOutputAttribute; external kernel32 name 'WriteConsoleOutputAttribute';
  1665. function FillConsoleOutputCharacterA; external kernel32 name 'FillConsoleOutputCharacterA';
  1666. function FillConsoleOutputCharacterW; external kernel32 name 'FillConsoleOutputCharacterW';
  1667. function FillConsoleOutputCharacter; external kernel32 name 'FillConsoleOutputCharacter' + AWSuffix;
  1668. function FillConsoleOutputAttribute; external kernel32 name 'FillConsoleOutputAttribute';
  1669. function GetConsoleMode; external kernel32 name 'GetConsoleMode';
  1670. function GetNumberOfConsoleInputEvents; external kernel32 name 'GetNumberOfConsoleInputEvents';
  1671. function GetConsoleScreenBufferInfo; external kernel32 name 'GetConsoleScreenBufferInfo';
  1672. function GetLargestConsoleWindowSize; external kernel32 name 'GetLargestConsoleWindowSize';
  1673. function GetConsoleCursorInfo; external kernel32 name 'GetConsoleCursorInfo';
  1674. function GetCurrentConsoleFont; external kernel32 name 'GetCurrentConsoleFont';
  1675. function GetConsoleFontSize; external kernel32 name 'GetConsoleFontSize';
  1676. function GetConsoleSelectionInfo; external kernel32 name 'GetConsoleSelectionInfo';
  1677. function GetNumberOfConsoleMouseButtons; external kernel32 name 'GetNumberOfConsoleMouseButtons';
  1678. function SetConsoleMode; external kernel32 name 'SetConsoleMode';
  1679. function SetConsoleActiveScreenBuffer; external kernel32 name 'SetConsoleActiveScreenBuffer';
  1680. function FlushConsoleInputBuffer; external kernel32 name 'FlushConsoleInputBuffer';
  1681. function SetConsoleScreenBufferSize; external kernel32 name 'SetConsoleScreenBufferSize';
  1682. function SetConsoleCursorPosition; external kernel32 name 'SetConsoleCursorPosition';
  1683. function SetConsoleCursorInfo; external kernel32 name 'SetConsoleCursorInfo';
  1684. function ScrollConsoleScreenBufferA; external kernel32 name 'ScrollConsoleScreenBufferA';
  1685. function ScrollConsoleScreenBufferW; external kernel32 name 'ScrollConsoleScreenBufferW';
  1686. function ScrollConsoleScreenBuffer; external kernel32 name 'ScrollConsoleScreenBuffer' + AWSuffix;
  1687. function SetConsoleWindowInfo; external kernel32 name 'SetConsoleWindowInfo';
  1688. function SetConsoleTextAttribute; external kernel32 name 'SetConsoleTextAttribute';
  1689. function SetConsoleCtrlHandler; external kernel32 name 'SetConsoleCtrlHandler';
  1690. function GenerateConsoleCtrlEvent; external kernel32 name 'GenerateConsoleCtrlEvent';
  1691. function AllocConsole; external kernel32 name 'AllocConsole';
  1692. function FreeConsole; external kernel32 name 'FreeConsole';
  1693. function AttachConsole; external kernel32 name 'AttachConsole';
  1694. function GetConsoleTitleA; external kernel32 name 'GetConsoleTitleA';
  1695. function GetConsoleTitleW; external kernel32 name 'GetConsoleTitleW';
  1696. function GetConsoleTitle; external kernel32 name 'GetConsoleTitle' + AWSuffix;
  1697. function SetConsoleTitleA; external kernel32 name 'SetConsoleTitleA';
  1698. function SetConsoleTitleW; external kernel32 name 'SetConsoleTitleW';
  1699. function SetConsoleTitle; external kernel32 name 'SetConsoleTitle' + AWSuffix;
  1700. function ReadConsoleA; external kernel32 name 'ReadConsoleA';
  1701. function ReadConsoleW; external kernel32 name 'ReadConsoleW';
  1702. function ReadConsole; external kernel32 name 'ReadConsole' + AWSuffix;
  1703. function WriteConsoleA; external kernel32 name 'WriteConsoleA';
  1704. function WriteConsoleW; external kernel32 name 'WriteConsoleW';
  1705. function WriteConsole; external kernel32 name 'WriteConsole' + AWSuffix;
  1706. function CreateConsoleScreenBuffer; external kernel32 name 'CreateConsoleScreenBuffer';
  1707. function GetConsoleCP; external kernel32 name 'GetConsoleCP';
  1708. function SetConsoleCP; external kernel32 name 'SetConsoleCP';
  1709. function GetConsoleOutputCP; external kernel32 name 'GetConsoleOutputCP';
  1710. function SetConsoleOutputCP; external kernel32 name 'SetConsoleOutputCP';
  1711. function GetConsoleDisplayMode; external kernel32 name 'GetConsoleDisplayMode';
  1712. function GetConsoleWindow; external kernel32 name 'GetConsoleWindow';
  1713. function GetConsoleProcessList; external kernel32 name 'GetConsoleProcessList';
  1714. function AddConsoleAliasA; external kernel32 name 'AddConsoleAliasA';
  1715. function AddConsoleAliasW; external kernel32 name 'AddConsoleAliasW';
  1716. function AddConsoleAlias; external kernel32 name 'AddConsoleAlias' + AWSuffix;
  1717. function GetConsoleAliasA; external kernel32 name 'GetConsoleAliasA';
  1718. function GetConsoleAliasW; external kernel32 name 'GetConsoleAliasW';
  1719. function GetConsoleAlias; external kernel32 name 'GetConsoleAlias' + AWSuffix;
  1720. function GetConsoleAliasesLengthA; external kernel32 name 'GetConsoleAliasesLengthA';
  1721. function GetConsoleAliasesLengthW; external kernel32 name 'GetConsoleAliasesLengthW';
  1722. function GetConsoleAliasesLength; external kernel32 name 'GetConsoleAliasesLength' + AWSuffix;
  1723. function GetConsoleAliasExesLengthA; external kernel32 name 'GetConsoleAliasExesLengthA';
  1724. function GetConsoleAliasExesLengthW; external kernel32 name 'GetConsoleAliasExesLengthW';
  1725. function GetConsoleAliasExesLength; external kernel32 name 'GetConsoleAliasExesLength' + AWSuffix;
  1726. function GetConsoleAliasesA; external kernel32 name 'GetConsoleAliasesA';
  1727. function GetConsoleAliasesW; external kernel32 name 'GetConsoleAliasesW';
  1728. function GetConsoleAliases; external kernel32 name 'GetConsoleAliases' + AWSuffix;
  1729. function GetConsoleAliasExesA; external kernel32 name 'GetConsoleAliasExesA';
  1730. function GetConsoleAliasExesW; external kernel32 name 'GetConsoleAliasExesW';
  1731. function GetConsoleAliasExes; external kernel32 name 'GetConsoleAliasExes' + AWSuffix;
  1732. {$ENDIF DYNAMIC_LINK}
  1733. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  1734. {$IFNDEF JWA_INCLUDEMODE}
  1735. end.
  1736. {$ENDIF !JWA_INCLUDEMODE}