jwawincon.pas 59 KB

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