JwaWinUser.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:670k
源码类别:

Windows编程

开发平台:

Delphi

  1.   _CharPrevExA: Pointer;
  2. function CharPrevExA;
  3. begin
  4.   GetProcedureAddress(_CharPrevExA, user32, 'CharPrevExA');
  5.   asm
  6.     mov esp, ebp
  7.     pop ebp
  8.     jmp [_CharPrevExA]
  9.   end;
  10. end;
  11. {$ELSE}
  12. function CharPrevExA; external user32 name 'CharPrevExA';
  13. {$ENDIF DYNAMIC_LINK}
  14. {$IFDEF DYNAMIC_LINK}
  15. var
  16.   _IsCharAlphaA: Pointer;
  17. function IsCharAlphaA;
  18. begin
  19.   GetProcedureAddress(_IsCharAlphaA, user32, 'IsCharAlphaA');
  20.   asm
  21.     mov esp, ebp
  22.     pop ebp
  23.     jmp [_IsCharAlphaA]
  24.   end;
  25. end;
  26. {$ELSE}
  27. function IsCharAlphaA; external user32 name 'IsCharAlphaA';
  28. {$ENDIF DYNAMIC_LINK}
  29. {$IFDEF DYNAMIC_LINK}
  30. var
  31.   _IsCharAlphaW: Pointer;
  32. function IsCharAlphaW;
  33. begin
  34.   GetProcedureAddress(_IsCharAlphaW, user32, 'IsCharAlphaW');
  35.   asm
  36.     mov esp, ebp
  37.     pop ebp
  38.     jmp [_IsCharAlphaW]
  39.   end;
  40. end;
  41. {$ELSE}
  42. function IsCharAlphaW; external user32 name 'IsCharAlphaW';
  43. {$ENDIF DYNAMIC_LINK}
  44. {$IFDEF UNICODE}
  45. {$IFDEF DYNAMIC_LINK}
  46. var
  47.   _IsCharAlpha: Pointer;
  48. function IsCharAlpha;
  49. begin
  50.   GetProcedureAddress(_IsCharAlpha, user32, 'IsCharAlphaW');
  51.   asm
  52.     mov esp, ebp
  53.     pop ebp
  54.     jmp [_IsCharAlpha]
  55.   end;
  56. end;
  57. {$ELSE}
  58. function IsCharAlpha; external user32 name 'IsCharAlphaW';
  59. {$ENDIF DYNAMIC_LINK}
  60. {$ELSE}
  61. {$IFDEF DYNAMIC_LINK}
  62. var
  63.   _IsCharAlpha: Pointer;
  64. function IsCharAlpha;
  65. begin
  66.   GetProcedureAddress(_IsCharAlpha, user32, 'IsCharAlphaA');
  67.   asm
  68.     mov esp, ebp
  69.     pop ebp
  70.     jmp [_IsCharAlpha]
  71.   end;
  72. end;
  73. {$ELSE}
  74. function IsCharAlpha; external user32 name 'IsCharAlphaA';
  75. {$ENDIF DYNAMIC_LINK}
  76. {$ENDIF}
  77. {$IFDEF DYNAMIC_LINK}
  78. var
  79.   _IsCharAlphaNumericA: Pointer;
  80. function IsCharAlphaNumericA;
  81. begin
  82.   GetProcedureAddress(_IsCharAlphaNumericA, user32, 'IsCharAlphaNumericA');
  83.   asm
  84.     mov esp, ebp
  85.     pop ebp
  86.     jmp [_IsCharAlphaNumericA]
  87.   end;
  88. end;
  89. {$ELSE}
  90. function IsCharAlphaNumericA; external user32 name 'IsCharAlphaNumericA';
  91. {$ENDIF DYNAMIC_LINK}
  92. {$IFDEF DYNAMIC_LINK}
  93. var
  94.   _IsCharAlphaNumericW: Pointer;
  95. function IsCharAlphaNumericW;
  96. begin
  97.   GetProcedureAddress(_IsCharAlphaNumericW, user32, 'IsCharAlphaNumericW');
  98.   asm
  99.     mov esp, ebp
  100.     pop ebp
  101.     jmp [_IsCharAlphaNumericW]
  102.   end;
  103. end;
  104. {$ELSE}
  105. function IsCharAlphaNumericW; external user32 name 'IsCharAlphaNumericW';
  106. {$ENDIF DYNAMIC_LINK}
  107. {$IFDEF UNICODE}
  108. {$IFDEF DYNAMIC_LINK}
  109. var
  110.   _IsCharAlphaNumeric: Pointer;
  111. function IsCharAlphaNumeric;
  112. begin
  113.   GetProcedureAddress(_IsCharAlphaNumeric, user32, 'IsCharAlphaNumericW');
  114.   asm
  115.     mov esp, ebp
  116.     pop ebp
  117.     jmp [_IsCharAlphaNumeric]
  118.   end;
  119. end;
  120. {$ELSE}
  121. function IsCharAlphaNumeric; external user32 name 'IsCharAlphaNumericW';
  122. {$ENDIF DYNAMIC_LINK}
  123. {$ELSE}
  124. {$IFDEF DYNAMIC_LINK}
  125. var
  126.   _IsCharAlphaNumeric: Pointer;
  127. function IsCharAlphaNumeric;
  128. begin
  129.   GetProcedureAddress(_IsCharAlphaNumeric, user32, 'IsCharAlphaNumericA');
  130.   asm
  131.     mov esp, ebp
  132.     pop ebp
  133.     jmp [_IsCharAlphaNumeric]
  134.   end;
  135. end;
  136. {$ELSE}
  137. function IsCharAlphaNumeric; external user32 name 'IsCharAlphaNumericA';
  138. {$ENDIF DYNAMIC_LINK}
  139. {$ENDIF}
  140. {$IFDEF DYNAMIC_LINK}
  141. var
  142.   _IsCharUpperA: Pointer;
  143. function IsCharUpperA;
  144. begin
  145.   GetProcedureAddress(_IsCharUpperA, user32, 'IsCharUpperA');
  146.   asm
  147.     mov esp, ebp
  148.     pop ebp
  149.     jmp [_IsCharUpperA]
  150.   end;
  151. end;
  152. {$ELSE}
  153. function IsCharUpperA; external user32 name 'IsCharUpperA';
  154. {$ENDIF DYNAMIC_LINK}
  155. {$IFDEF DYNAMIC_LINK}
  156. var
  157.   _IsCharUpperW: Pointer;
  158. function IsCharUpperW;
  159. begin
  160.   GetProcedureAddress(_IsCharUpperW, user32, 'IsCharUpperW');
  161.   asm
  162.     mov esp, ebp
  163.     pop ebp
  164.     jmp [_IsCharUpperW]
  165.   end;
  166. end;
  167. {$ELSE}
  168. function IsCharUpperW; external user32 name 'IsCharUpperW';
  169. {$ENDIF DYNAMIC_LINK}
  170. {$IFDEF UNICODE}
  171. {$IFDEF DYNAMIC_LINK}
  172. var
  173.   _IsCharUpper: Pointer;
  174. function IsCharUpper;
  175. begin
  176.   GetProcedureAddress(_IsCharUpper, user32, 'IsCharUpperW');
  177.   asm
  178.     mov esp, ebp
  179.     pop ebp
  180.     jmp [_IsCharUpper]
  181.   end;
  182. end;
  183. {$ELSE}
  184. function IsCharUpper; external user32 name 'IsCharUpperW';
  185. {$ENDIF DYNAMIC_LINK}
  186. {$ELSE}
  187. {$IFDEF DYNAMIC_LINK}
  188. var
  189.   _IsCharUpper: Pointer;
  190. function IsCharUpper;
  191. begin
  192.   GetProcedureAddress(_IsCharUpper, user32, 'IsCharUpperA');
  193.   asm
  194.     mov esp, ebp
  195.     pop ebp
  196.     jmp [_IsCharUpper]
  197.   end;
  198. end;
  199. {$ELSE}
  200. function IsCharUpper; external user32 name 'IsCharUpperA';
  201. {$ENDIF DYNAMIC_LINK}
  202. {$ENDIF}
  203. {$IFDEF DYNAMIC_LINK}
  204. var
  205.   _IsCharLowerA: Pointer;
  206. function IsCharLowerA;
  207. begin
  208.   GetProcedureAddress(_IsCharLowerA, user32, 'IsCharLowerA');
  209.   asm
  210.     mov esp, ebp
  211.     pop ebp
  212.     jmp [_IsCharLowerA]
  213.   end;
  214. end;
  215. {$ELSE}
  216. function IsCharLowerA; external user32 name 'IsCharLowerA';
  217. {$ENDIF DYNAMIC_LINK}
  218. {$IFDEF DYNAMIC_LINK}
  219. var
  220.   _IsCharLowerW: Pointer;
  221. function IsCharLowerW;
  222. begin
  223.   GetProcedureAddress(_IsCharLowerW, user32, 'IsCharLowerW');
  224.   asm
  225.     mov esp, ebp
  226.     pop ebp
  227.     jmp [_IsCharLowerW]
  228.   end;
  229. end;
  230. {$ELSE}
  231. function IsCharLowerW; external user32 name 'IsCharLowerW';
  232. {$ENDIF DYNAMIC_LINK}
  233. {$IFDEF UNICODE}
  234. {$IFDEF DYNAMIC_LINK}
  235. var
  236.   _IsCharLower: Pointer;
  237. function IsCharLower;
  238. begin
  239.   GetProcedureAddress(_IsCharLower, user32, 'IsCharLowerW');
  240.   asm
  241.     mov esp, ebp
  242.     pop ebp
  243.     jmp [_IsCharLower]
  244.   end;
  245. end;
  246. {$ELSE}
  247. function IsCharLower; external user32 name 'IsCharLowerW';
  248. {$ENDIF DYNAMIC_LINK}
  249. {$ELSE}
  250. {$IFDEF DYNAMIC_LINK}
  251. var
  252.   _IsCharLower: Pointer;
  253. function IsCharLower;
  254. begin
  255.   GetProcedureAddress(_IsCharLower, user32, 'IsCharLowerA');
  256.   asm
  257.     mov esp, ebp
  258.     pop ebp
  259.     jmp [_IsCharLower]
  260.   end;
  261. end;
  262. {$ELSE}
  263. function IsCharLower; external user32 name 'IsCharLowerA';
  264. {$ENDIF DYNAMIC_LINK}
  265. {$ENDIF}
  266. {$IFDEF DYNAMIC_LINK}
  267. var
  268.   _SetFocus: Pointer;
  269. function SetFocus;
  270. begin
  271.   GetProcedureAddress(_SetFocus, user32, 'SetFocus');
  272.   asm
  273.     mov esp, ebp
  274.     pop ebp
  275.     jmp [_SetFocus]
  276.   end;
  277. end;
  278. {$ELSE}
  279. function SetFocus; external user32 name 'SetFocus';
  280. {$ENDIF DYNAMIC_LINK}
  281. {$IFDEF DYNAMIC_LINK}
  282. var
  283.   _GetActiveWindow: Pointer;
  284. function GetActiveWindow;
  285. begin
  286.   GetProcedureAddress(_GetActiveWindow, user32, 'GetActiveWindow');
  287.   asm
  288.     mov esp, ebp
  289.     pop ebp
  290.     jmp [_GetActiveWindow]
  291.   end;
  292. end;
  293. {$ELSE}
  294. function GetActiveWindow; external user32 name 'GetActiveWindow';
  295. {$ENDIF DYNAMIC_LINK}
  296. {$IFDEF DYNAMIC_LINK}
  297. var
  298.   _GetFocus: Pointer;
  299. function GetFocus;
  300. begin
  301.   GetProcedureAddress(_GetFocus, user32, 'GetFocus');
  302.   asm
  303.     mov esp, ebp
  304.     pop ebp
  305.     jmp [_GetFocus]
  306.   end;
  307. end;
  308. {$ELSE}
  309. function GetFocus; external user32 name 'GetFocus';
  310. {$ENDIF DYNAMIC_LINK}
  311. {$IFDEF DYNAMIC_LINK}
  312. var
  313.   _GetKBCodePage: Pointer;
  314. function GetKBCodePage;
  315. begin
  316.   GetProcedureAddress(_GetKBCodePage, user32, 'GetKBCodePage');
  317.   asm
  318.     mov esp, ebp
  319.     pop ebp
  320.     jmp [_GetKBCodePage]
  321.   end;
  322. end;
  323. {$ELSE}
  324. function GetKBCodePage; external user32 name 'GetKBCodePage';
  325. {$ENDIF DYNAMIC_LINK}
  326. {$IFDEF DYNAMIC_LINK}
  327. var
  328.   _GetKeyState: Pointer;
  329. function GetKeyState;
  330. begin
  331.   GetProcedureAddress(_GetKeyState, user32, 'GetKeyState');
  332.   asm
  333.     mov esp, ebp
  334.     pop ebp
  335.     jmp [_GetKeyState]
  336.   end;
  337. end;
  338. {$ELSE}
  339. function GetKeyState; external user32 name 'GetKeyState';
  340. {$ENDIF DYNAMIC_LINK}
  341. {$IFDEF DYNAMIC_LINK}
  342. var
  343.   _GetAsyncKeyState: Pointer;
  344. function GetAsyncKeyState;
  345. begin
  346.   GetProcedureAddress(_GetAsyncKeyState, user32, 'GetAsyncKeyState');
  347.   asm
  348.     mov esp, ebp
  349.     pop ebp
  350.     jmp [_GetAsyncKeyState]
  351.   end;
  352. end;
  353. {$ELSE}
  354. function GetAsyncKeyState; external user32 name 'GetAsyncKeyState';
  355. {$ENDIF DYNAMIC_LINK}
  356. {$IFDEF DYNAMIC_LINK}
  357. var
  358.   _GetKeyboardState: Pointer;
  359. function GetKeyboardState;
  360. begin
  361.   GetProcedureAddress(_GetKeyboardState, user32, 'GetKeyboardState');
  362.   asm
  363.     mov esp, ebp
  364.     pop ebp
  365.     jmp [_GetKeyboardState]
  366.   end;
  367. end;
  368. {$ELSE}
  369. function GetKeyboardState; external user32 name 'GetKeyboardState';
  370. {$ENDIF DYNAMIC_LINK}
  371. {$IFDEF DYNAMIC_LINK}
  372. var
  373.   _SetKeyboardState: Pointer;
  374. function SetKeyboardState;
  375. begin
  376.   GetProcedureAddress(_SetKeyboardState, user32, 'SetKeyboardState');
  377.   asm
  378.     mov esp, ebp
  379.     pop ebp
  380.     jmp [_SetKeyboardState]
  381.   end;
  382. end;
  383. {$ELSE}
  384. function SetKeyboardState; external user32 name 'SetKeyboardState';
  385. {$ENDIF DYNAMIC_LINK}
  386. {$IFDEF DYNAMIC_LINK}
  387. var
  388.   _GetKeyNameTextA: Pointer;
  389. function GetKeyNameTextA;
  390. begin
  391.   GetProcedureAddress(_GetKeyNameTextA, user32, 'GetKeyNameTextA');
  392.   asm
  393.     mov esp, ebp
  394.     pop ebp
  395.     jmp [_GetKeyNameTextA]
  396.   end;
  397. end;
  398. {$ELSE}
  399. function GetKeyNameTextA; external user32 name 'GetKeyNameTextA';
  400. {$ENDIF DYNAMIC_LINK}
  401. {$IFDEF DYNAMIC_LINK}
  402. var
  403.   _GetKeyNameTextW: Pointer;
  404. function GetKeyNameTextW;
  405. begin
  406.   GetProcedureAddress(_GetKeyNameTextW, user32, 'GetKeyNameTextW');
  407.   asm
  408.     mov esp, ebp
  409.     pop ebp
  410.     jmp [_GetKeyNameTextW]
  411.   end;
  412. end;
  413. {$ELSE}
  414. function GetKeyNameTextW; external user32 name 'GetKeyNameTextW';
  415. {$ENDIF DYNAMIC_LINK}
  416. {$IFDEF UNICODE}
  417. {$IFDEF DYNAMIC_LINK}
  418. var
  419.   _GetKeyNameText: Pointer;
  420. function GetKeyNameText;
  421. begin
  422.   GetProcedureAddress(_GetKeyNameText, user32, 'GetKeyNameTextW');
  423.   asm
  424.     mov esp, ebp
  425.     pop ebp
  426.     jmp [_GetKeyNameText]
  427.   end;
  428. end;
  429. {$ELSE}
  430. function GetKeyNameText; external user32 name 'GetKeyNameTextW';
  431. {$ENDIF DYNAMIC_LINK}
  432. {$ELSE}
  433. {$IFDEF DYNAMIC_LINK}
  434. var
  435.   _GetKeyNameText: Pointer;
  436. function GetKeyNameText;
  437. begin
  438.   GetProcedureAddress(_GetKeyNameText, user32, 'GetKeyNameTextA');
  439.   asm
  440.     mov esp, ebp
  441.     pop ebp
  442.     jmp [_GetKeyNameText]
  443.   end;
  444. end;
  445. {$ELSE}
  446. function GetKeyNameText; external user32 name 'GetKeyNameTextA';
  447. {$ENDIF DYNAMIC_LINK}
  448. {$ENDIF}
  449. {$IFDEF DYNAMIC_LINK}
  450. var
  451.   _GetKeyboardType: Pointer;
  452. function GetKeyboardType;
  453. begin
  454.   GetProcedureAddress(_GetKeyboardType, user32, 'GetKeyboardType');
  455.   asm
  456.     mov esp, ebp
  457.     pop ebp
  458.     jmp [_GetKeyboardType]
  459.   end;
  460. end;
  461. {$ELSE}
  462. function GetKeyboardType; external user32 name 'GetKeyboardType';
  463. {$ENDIF DYNAMIC_LINK}
  464. {$IFDEF DYNAMIC_LINK}
  465. var
  466.   _ToAscii: Pointer;
  467. function ToAscii;
  468. begin
  469.   GetProcedureAddress(_ToAscii, user32, 'ToAscii');
  470.   asm
  471.     mov esp, ebp
  472.     pop ebp
  473.     jmp [_ToAscii]
  474.   end;
  475. end;
  476. {$ELSE}
  477. function ToAscii; external user32 name 'ToAscii';
  478. {$ENDIF DYNAMIC_LINK}
  479. {$IFDEF DYNAMIC_LINK}
  480. var
  481.   _ToAsciiEx: Pointer;
  482. function ToAsciiEx;
  483. begin
  484.   GetProcedureAddress(_ToAsciiEx, user32, 'ToAsciiEx');
  485.   asm
  486.     mov esp, ebp
  487.     pop ebp
  488.     jmp [_ToAsciiEx]
  489.   end;
  490. end;
  491. {$ELSE}
  492. function ToAsciiEx; external user32 name 'ToAsciiEx';
  493. {$ENDIF DYNAMIC_LINK}
  494. {$IFDEF DYNAMIC_LINK}
  495. var
  496.   _ToUnicode: Pointer;
  497. function ToUnicode;
  498. begin
  499.   GetProcedureAddress(_ToUnicode, user32, 'ToUnicode');
  500.   asm
  501.     mov esp, ebp
  502.     pop ebp
  503.     jmp [_ToUnicode]
  504.   end;
  505. end;
  506. {$ELSE}
  507. function ToUnicode; external user32 name 'ToUnicode';
  508. {$ENDIF DYNAMIC_LINK}
  509. {$IFDEF DYNAMIC_LINK}
  510. var
  511.   _OemKeyScan: Pointer;
  512. function OemKeyScan;
  513. begin
  514.   GetProcedureAddress(_OemKeyScan, user32, 'OemKeyScan');
  515.   asm
  516.     mov esp, ebp
  517.     pop ebp
  518.     jmp [_OemKeyScan]
  519.   end;
  520. end;
  521. {$ELSE}
  522. function OemKeyScan; external user32 name 'OemKeyScan';
  523. {$ENDIF DYNAMIC_LINK}
  524. {$IFDEF DYNAMIC_LINK}
  525. var
  526.   _VkKeyScanA: Pointer;
  527. function VkKeyScanA;
  528. begin
  529.   GetProcedureAddress(_VkKeyScanA, user32, 'VkKeyScanA');
  530.   asm
  531.     mov esp, ebp
  532.     pop ebp
  533.     jmp [_VkKeyScanA]
  534.   end;
  535. end;
  536. {$ELSE}
  537. function VkKeyScanA; external user32 name 'VkKeyScanA';
  538. {$ENDIF DYNAMIC_LINK}
  539. {$IFDEF DYNAMIC_LINK}
  540. var
  541.   _VkKeyScanW: Pointer;
  542. function VkKeyScanW;
  543. begin
  544.   GetProcedureAddress(_VkKeyScanW, user32, 'VkKeyScanW');
  545.   asm
  546.     mov esp, ebp
  547.     pop ebp
  548.     jmp [_VkKeyScanW]
  549.   end;
  550. end;
  551. {$ELSE}
  552. function VkKeyScanW; external user32 name 'VkKeyScanW';
  553. {$ENDIF DYNAMIC_LINK}
  554. {$IFDEF UNICODE}
  555. {$IFDEF DYNAMIC_LINK}
  556. var
  557.   _VkKeyScan: Pointer;
  558. function VkKeyScan;
  559. begin
  560.   GetProcedureAddress(_VkKeyScan, user32, 'VkKeyScanW');
  561.   asm
  562.     mov esp, ebp
  563.     pop ebp
  564.     jmp [_VkKeyScan]
  565.   end;
  566. end;
  567. {$ELSE}
  568. function VkKeyScan; external user32 name 'VkKeyScanW';
  569. {$ENDIF DYNAMIC_LINK}
  570. {$ELSE}
  571. {$IFDEF DYNAMIC_LINK}
  572. var
  573.   _VkKeyScan: Pointer;
  574. function VkKeyScan;
  575. begin
  576.   GetProcedureAddress(_VkKeyScan, user32, 'VkKeyScanA');
  577.   asm
  578.     mov esp, ebp
  579.     pop ebp
  580.     jmp [_VkKeyScan]
  581.   end;
  582. end;
  583. {$ELSE}
  584. function VkKeyScan; external user32 name 'VkKeyScanA';
  585. {$ENDIF DYNAMIC_LINK}
  586. {$ENDIF}
  587. {$IFDEF DYNAMIC_LINK}
  588. var
  589.   _VkKeyScanExA: Pointer;
  590. function VkKeyScanExA;
  591. begin
  592.   GetProcedureAddress(_VkKeyScanExA, user32, 'VkKeyScanExA');
  593.   asm
  594.     mov esp, ebp
  595.     pop ebp
  596.     jmp [_VkKeyScanExA]
  597.   end;
  598. end;
  599. {$ELSE}
  600. function VkKeyScanExA; external user32 name 'VkKeyScanExA';
  601. {$ENDIF DYNAMIC_LINK}
  602. {$IFDEF DYNAMIC_LINK}
  603. var
  604.   _VkKeyScanExW: Pointer;
  605. function VkKeyScanExW;
  606. begin
  607.   GetProcedureAddress(_VkKeyScanExW, user32, 'VkKeyScanExW');
  608.   asm
  609.     mov esp, ebp
  610.     pop ebp
  611.     jmp [_VkKeyScanExW]
  612.   end;
  613. end;
  614. {$ELSE}
  615. function VkKeyScanExW; external user32 name 'VkKeyScanExW';
  616. {$ENDIF DYNAMIC_LINK}
  617. {$IFDEF UNICODE}
  618. {$IFDEF DYNAMIC_LINK}
  619. var
  620.   _VkKeyScanEx: Pointer;
  621. function VkKeyScanEx;
  622. begin
  623.   GetProcedureAddress(_VkKeyScanEx, user32, 'VkKeyScanExW');
  624.   asm
  625.     mov esp, ebp
  626.     pop ebp
  627.     jmp [_VkKeyScanEx]
  628.   end;
  629. end;
  630. {$ELSE}
  631. function VkKeyScanEx; external user32 name 'VkKeyScanExW';
  632. {$ENDIF DYNAMIC_LINK}
  633. {$ELSE}
  634. {$IFDEF DYNAMIC_LINK}
  635. var
  636.   _VkKeyScanEx: Pointer;
  637. function VkKeyScanEx;
  638. begin
  639.   GetProcedureAddress(_VkKeyScanEx, user32, 'VkKeyScanExA');
  640.   asm
  641.     mov esp, ebp
  642.     pop ebp
  643.     jmp [_VkKeyScanEx]
  644.   end;
  645. end;
  646. {$ELSE}
  647. function VkKeyScanEx; external user32 name 'VkKeyScanExA';
  648. {$ENDIF DYNAMIC_LINK}
  649. {$ENDIF}
  650. {$IFDEF DYNAMIC_LINK}
  651. var
  652.   _keybd_event: Pointer;
  653. procedure keybd_event;
  654. begin
  655.   GetProcedureAddress(_keybd_event, user32, 'keybd_event');
  656.   asm
  657.     mov esp, ebp
  658.     pop ebp
  659.     jmp [_keybd_event]
  660.   end;
  661. end;
  662. {$ELSE}
  663. procedure keybd_event; external user32 name 'keybd_event';
  664. {$ENDIF DYNAMIC_LINK}
  665. {$IFDEF DYNAMIC_LINK}
  666. var
  667.   _mouse_event: Pointer;
  668. procedure mouse_event;
  669. begin
  670.   GetProcedureAddress(_mouse_event, user32, 'mouse_event');
  671.   asm
  672.     mov esp, ebp
  673.     pop ebp
  674.     jmp [_mouse_event]
  675.   end;
  676. end;
  677. {$ELSE}
  678. procedure mouse_event; external user32 name 'mouse_event';
  679. {$ENDIF DYNAMIC_LINK}
  680. {$IFDEF DYNAMIC_LINK}
  681. var
  682.   _SendInput: Pointer;
  683. function SendInput;
  684. begin
  685.   GetProcedureAddress(_SendInput, user32, 'SendInput');
  686.   asm
  687.     mov esp, ebp
  688.     pop ebp
  689.     jmp [_SendInput]
  690.   end;
  691. end;
  692. {$ELSE}
  693. function SendInput; external user32 name 'SendInput';
  694. {$ENDIF DYNAMIC_LINK}
  695. {$IFDEF DYNAMIC_LINK}
  696. var
  697.   _GetLastInputInfo: Pointer;
  698. function GetLastInputInfo;
  699. begin
  700.   GetProcedureAddress(_GetLastInputInfo, user32, 'GetLastInputInfo');
  701.   asm
  702.     mov esp, ebp
  703.     pop ebp
  704.     jmp [_GetLastInputInfo]
  705.   end;
  706. end;
  707. {$ELSE}
  708. function GetLastInputInfo; external user32 name 'GetLastInputInfo';
  709. {$ENDIF DYNAMIC_LINK}
  710. {$IFDEF DYNAMIC_LINK}
  711. var
  712.   _MapVirtualKeyA: Pointer;
  713. function MapVirtualKeyA;
  714. begin
  715.   GetProcedureAddress(_MapVirtualKeyA, user32, 'MapVirtualKeyA');
  716.   asm
  717.     mov esp, ebp
  718.     pop ebp
  719.     jmp [_MapVirtualKeyA]
  720.   end;
  721. end;
  722. {$ELSE}
  723. function MapVirtualKeyA; external user32 name 'MapVirtualKeyA';
  724. {$ENDIF DYNAMIC_LINK}
  725. {$IFDEF DYNAMIC_LINK}
  726. var
  727.   _MapVirtualKeyW: Pointer;
  728. function MapVirtualKeyW;
  729. begin
  730.   GetProcedureAddress(_MapVirtualKeyW, user32, 'MapVirtualKeyW');
  731.   asm
  732.     mov esp, ebp
  733.     pop ebp
  734.     jmp [_MapVirtualKeyW]
  735.   end;
  736. end;
  737. {$ELSE}
  738. function MapVirtualKeyW; external user32 name 'MapVirtualKeyW';
  739. {$ENDIF DYNAMIC_LINK}
  740. {$IFDEF UNICODE}
  741. {$IFDEF DYNAMIC_LINK}
  742. var
  743.   _MapVirtualKey: Pointer;
  744. function MapVirtualKey;
  745. begin
  746.   GetProcedureAddress(_MapVirtualKey, user32, 'MapVirtualKeyW');
  747.   asm
  748.     mov esp, ebp
  749.     pop ebp
  750.     jmp [_MapVirtualKey]
  751.   end;
  752. end;
  753. {$ELSE}
  754. function MapVirtualKey; external user32 name 'MapVirtualKeyW';
  755. {$ENDIF DYNAMIC_LINK}
  756. {$ELSE}
  757. {$IFDEF DYNAMIC_LINK}
  758. var
  759.   _MapVirtualKey: Pointer;
  760. function MapVirtualKey;
  761. begin
  762.   GetProcedureAddress(_MapVirtualKey, user32, 'MapVirtualKeyA');
  763.   asm
  764.     mov esp, ebp
  765.     pop ebp
  766.     jmp [_MapVirtualKey]
  767.   end;
  768. end;
  769. {$ELSE}
  770. function MapVirtualKey; external user32 name 'MapVirtualKeyA';
  771. {$ENDIF DYNAMIC_LINK}
  772. {$ENDIF}
  773. {$IFDEF DYNAMIC_LINK}
  774. var
  775.   _MapVirtualKeyExA: Pointer;
  776. function MapVirtualKeyExA;
  777. begin
  778.   GetProcedureAddress(_MapVirtualKeyExA, user32, 'MapVirtualKeyExA');
  779.   asm
  780.     mov esp, ebp
  781.     pop ebp
  782.     jmp [_MapVirtualKeyExA]
  783.   end;
  784. end;
  785. {$ELSE}
  786. function MapVirtualKeyExA; external user32 name 'MapVirtualKeyExA';
  787. {$ENDIF DYNAMIC_LINK}
  788. {$IFDEF DYNAMIC_LINK}
  789. var
  790.   _MapVirtualKeyExW: Pointer;
  791. function MapVirtualKeyExW;
  792. begin
  793.   GetProcedureAddress(_MapVirtualKeyExW, user32, 'MapVirtualKeyExW');
  794.   asm
  795.     mov esp, ebp
  796.     pop ebp
  797.     jmp [_MapVirtualKeyExW]
  798.   end;
  799. end;
  800. {$ELSE}
  801. function MapVirtualKeyExW; external user32 name 'MapVirtualKeyExW';
  802. {$ENDIF DYNAMIC_LINK}
  803. {$IFDEF UNICODE}
  804. {$IFDEF DYNAMIC_LINK}
  805. var
  806.   _MapVirtualKeyEx: Pointer;
  807. function MapVirtualKeyEx;
  808. begin
  809.   GetProcedureAddress(_MapVirtualKeyEx, user32, 'MapVirtualKeyExW');
  810.   asm
  811.     mov esp, ebp
  812.     pop ebp
  813.     jmp [_MapVirtualKeyEx]
  814.   end;
  815. end;
  816. {$ELSE}
  817. function MapVirtualKeyEx; external user32 name 'MapVirtualKeyExW';
  818. {$ENDIF DYNAMIC_LINK}
  819. {$ELSE}
  820. {$IFDEF DYNAMIC_LINK}
  821. var
  822.   _MapVirtualKeyEx: Pointer;
  823. function MapVirtualKeyEx;
  824. begin
  825.   GetProcedureAddress(_MapVirtualKeyEx, user32, 'MapVirtualKeyExA');
  826.   asm
  827.     mov esp, ebp
  828.     pop ebp
  829.     jmp [_MapVirtualKeyEx]
  830.   end;
  831. end;
  832. {$ELSE}
  833. function MapVirtualKeyEx; external user32 name 'MapVirtualKeyExA';
  834. {$ENDIF DYNAMIC_LINK}
  835. {$ENDIF}
  836. {$IFDEF DYNAMIC_LINK}
  837. var
  838.   _GetInputState: Pointer;
  839. function GetInputState;
  840. begin
  841.   GetProcedureAddress(_GetInputState, user32, 'GetInputState');
  842.   asm
  843.     mov esp, ebp
  844.     pop ebp
  845.     jmp [_GetInputState]
  846.   end;
  847. end;
  848. {$ELSE}
  849. function GetInputState; external user32 name 'GetInputState';
  850. {$ENDIF DYNAMIC_LINK}
  851. {$IFDEF DYNAMIC_LINK}
  852. var
  853.   _GetQueueStatus: Pointer;
  854. function GetQueueStatus;
  855. begin
  856.   GetProcedureAddress(_GetQueueStatus, user32, 'GetQueueStatus');
  857.   asm
  858.     mov esp, ebp
  859.     pop ebp
  860.     jmp [_GetQueueStatus]
  861.   end;
  862. end;
  863. {$ELSE}
  864. function GetQueueStatus; external user32 name 'GetQueueStatus';
  865. {$ENDIF DYNAMIC_LINK}
  866. {$IFDEF DYNAMIC_LINK}
  867. var
  868.   _GetCapture: Pointer;
  869. function GetCapture;
  870. begin
  871.   GetProcedureAddress(_GetCapture, user32, 'GetCapture');
  872.   asm
  873.     mov esp, ebp
  874.     pop ebp
  875.     jmp [_GetCapture]
  876.   end;
  877. end;
  878. {$ELSE}
  879. function GetCapture; external user32 name 'GetCapture';
  880. {$ENDIF DYNAMIC_LINK}
  881. {$IFDEF DYNAMIC_LINK}
  882. var
  883.   _SetCapture: Pointer;
  884. function SetCapture;
  885. begin
  886.   GetProcedureAddress(_SetCapture, user32, 'SetCapture');
  887.   asm
  888.     mov esp, ebp
  889.     pop ebp
  890.     jmp [_SetCapture]
  891.   end;
  892. end;
  893. {$ELSE}
  894. function SetCapture; external user32 name 'SetCapture';
  895. {$ENDIF DYNAMIC_LINK}
  896. {$IFDEF DYNAMIC_LINK}
  897. var
  898.   _ReleaseCapture: Pointer;
  899. function ReleaseCapture;
  900. begin
  901.   GetProcedureAddress(_ReleaseCapture, user32, 'ReleaseCapture');
  902.   asm
  903.     mov esp, ebp
  904.     pop ebp
  905.     jmp [_ReleaseCapture]
  906.   end;
  907. end;
  908. {$ELSE}
  909. function ReleaseCapture; external user32 name 'ReleaseCapture';
  910. {$ENDIF DYNAMIC_LINK}
  911. {$IFDEF DYNAMIC_LINK}
  912. var
  913.   _MsgWaitForMultipleObjects: Pointer;
  914. function MsgWaitForMultipleObjects;
  915. begin
  916.   GetProcedureAddress(_MsgWaitForMultipleObjects, user32, 'MsgWaitForMultipleObjects');
  917.   asm
  918.     mov esp, ebp
  919.     pop ebp
  920.     jmp [_MsgWaitForMultipleObjects]
  921.   end;
  922. end;
  923. {$ELSE}
  924. function MsgWaitForMultipleObjects; external user32 name 'MsgWaitForMultipleObjects';
  925. {$ENDIF DYNAMIC_LINK}
  926. {$IFDEF DYNAMIC_LINK}
  927. var
  928.   _MsgWaitForMultipleObjectsEx: Pointer;
  929. function MsgWaitForMultipleObjectsEx;
  930. begin
  931.   GetProcedureAddress(_MsgWaitForMultipleObjectsEx, user32, 'MsgWaitForMultipleObjectsEx');
  932.   asm
  933.     mov esp, ebp
  934.     pop ebp
  935.     jmp [_MsgWaitForMultipleObjectsEx]
  936.   end;
  937. end;
  938. {$ELSE}
  939. function MsgWaitForMultipleObjectsEx; external user32 name 'MsgWaitForMultipleObjectsEx';
  940. {$ENDIF DYNAMIC_LINK}
  941. {$IFDEF DYNAMIC_LINK}
  942. var
  943.   _SetTimer: Pointer;
  944. function SetTimer;
  945. begin
  946.   GetProcedureAddress(_SetTimer, user32, 'SetTimer');
  947.   asm
  948.     mov esp, ebp
  949.     pop ebp
  950.     jmp [_SetTimer]
  951.   end;
  952. end;
  953. {$ELSE}
  954. function SetTimer; external user32 name 'SetTimer';
  955. {$ENDIF DYNAMIC_LINK}
  956. {$IFDEF DYNAMIC_LINK}
  957. var
  958.   _KillTimer: Pointer;
  959. function KillTimer;
  960. begin
  961.   GetProcedureAddress(_KillTimer, user32, 'KillTimer');
  962.   asm
  963.     mov esp, ebp
  964.     pop ebp
  965.     jmp [_KillTimer]
  966.   end;
  967. end;
  968. {$ELSE}
  969. function KillTimer; external user32 name 'KillTimer';
  970. {$ENDIF DYNAMIC_LINK}
  971. {$IFDEF DYNAMIC_LINK}
  972. var
  973.   _IsWindowUnicode: Pointer;
  974. function IsWindowUnicode;
  975. begin
  976.   GetProcedureAddress(_IsWindowUnicode, user32, 'IsWindowUnicode');
  977.   asm
  978.     mov esp, ebp
  979.     pop ebp
  980.     jmp [_IsWindowUnicode]
  981.   end;
  982. end;
  983. {$ELSE}
  984. function IsWindowUnicode; external user32 name 'IsWindowUnicode';
  985. {$ENDIF DYNAMIC_LINK}
  986. {$IFDEF DYNAMIC_LINK}
  987. var
  988.   _EnableWindow: Pointer;
  989. function EnableWindow;
  990. begin
  991.   GetProcedureAddress(_EnableWindow, user32, 'EnableWindow');
  992.   asm
  993.     mov esp, ebp
  994.     pop ebp
  995.     jmp [_EnableWindow]
  996.   end;
  997. end;
  998. {$ELSE}
  999. function EnableWindow; external user32 name 'EnableWindow';
  1000. {$ENDIF DYNAMIC_LINK}
  1001. {$IFDEF DYNAMIC_LINK}
  1002. var
  1003.   _IsWindowEnabled: Pointer;
  1004. function IsWindowEnabled;
  1005. begin
  1006.   GetProcedureAddress(_IsWindowEnabled, user32, 'IsWindowEnabled');
  1007.   asm
  1008.     mov esp, ebp
  1009.     pop ebp
  1010.     jmp [_IsWindowEnabled]
  1011.   end;
  1012. end;
  1013. {$ELSE}
  1014. function IsWindowEnabled; external user32 name 'IsWindowEnabled';
  1015. {$ENDIF DYNAMIC_LINK}
  1016. {$IFDEF DYNAMIC_LINK}
  1017. var
  1018.   _LoadAcceleratorsA: Pointer;
  1019. function LoadAcceleratorsA;
  1020. begin
  1021.   GetProcedureAddress(_LoadAcceleratorsA, user32, 'LoadAcceleratorsA');
  1022.   asm
  1023.     mov esp, ebp
  1024.     pop ebp
  1025.     jmp [_LoadAcceleratorsA]
  1026.   end;
  1027. end;
  1028. {$ELSE}
  1029. function LoadAcceleratorsA; external user32 name 'LoadAcceleratorsA';
  1030. {$ENDIF DYNAMIC_LINK}
  1031. {$IFDEF DYNAMIC_LINK}
  1032. var
  1033.   _LoadAcceleratorsW: Pointer;
  1034. function LoadAcceleratorsW;
  1035. begin
  1036.   GetProcedureAddress(_LoadAcceleratorsW, user32, 'LoadAcceleratorsW');
  1037.   asm
  1038.     mov esp, ebp
  1039.     pop ebp
  1040.     jmp [_LoadAcceleratorsW]
  1041.   end;
  1042. end;
  1043. {$ELSE}
  1044. function LoadAcceleratorsW; external user32 name 'LoadAcceleratorsW';
  1045. {$ENDIF DYNAMIC_LINK}
  1046. {$IFDEF UNICODE}
  1047. {$IFDEF DYNAMIC_LINK}
  1048. var
  1049.   _LoadAccelerators: Pointer;
  1050. function LoadAccelerators;
  1051. begin
  1052.   GetProcedureAddress(_LoadAccelerators, user32, 'LoadAcceleratorsW');
  1053.   asm
  1054.     mov esp, ebp
  1055.     pop ebp
  1056.     jmp [_LoadAccelerators]
  1057.   end;
  1058. end;
  1059. {$ELSE}
  1060. function LoadAccelerators; external user32 name 'LoadAcceleratorsW';
  1061. {$ENDIF DYNAMIC_LINK}
  1062. {$ELSE}
  1063. {$IFDEF DYNAMIC_LINK}
  1064. var
  1065.   _LoadAccelerators: Pointer;
  1066. function LoadAccelerators;
  1067. begin
  1068.   GetProcedureAddress(_LoadAccelerators, user32, 'LoadAcceleratorsA');
  1069.   asm
  1070.     mov esp, ebp
  1071.     pop ebp
  1072.     jmp [_LoadAccelerators]
  1073.   end;
  1074. end;
  1075. {$ELSE}
  1076. function LoadAccelerators; external user32 name 'LoadAcceleratorsA';
  1077. {$ENDIF DYNAMIC_LINK}
  1078. {$ENDIF}
  1079. {$IFDEF DYNAMIC_LINK}
  1080. var
  1081.   _CreateAcceleratorTableA: Pointer;
  1082. function CreateAcceleratorTableA;
  1083. begin
  1084.   GetProcedureAddress(_CreateAcceleratorTableA, user32, 'CreateAcceleratorTableA');
  1085.   asm
  1086.     mov esp, ebp
  1087.     pop ebp
  1088.     jmp [_CreateAcceleratorTableA]
  1089.   end;
  1090. end;
  1091. {$ELSE}
  1092. function CreateAcceleratorTableA; external user32 name 'CreateAcceleratorTableA';
  1093. {$ENDIF DYNAMIC_LINK}
  1094. {$IFDEF DYNAMIC_LINK}
  1095. var
  1096.   _CreateAcceleratorTableW: Pointer;
  1097. function CreateAcceleratorTableW;
  1098. begin
  1099.   GetProcedureAddress(_CreateAcceleratorTableW, user32, 'CreateAcceleratorTableW');
  1100.   asm
  1101.     mov esp, ebp
  1102.     pop ebp
  1103.     jmp [_CreateAcceleratorTableW]
  1104.   end;
  1105. end;
  1106. {$ELSE}
  1107. function CreateAcceleratorTableW; external user32 name 'CreateAcceleratorTableW';
  1108. {$ENDIF DYNAMIC_LINK}
  1109. {$IFDEF UNICODE}
  1110. {$IFDEF DYNAMIC_LINK}
  1111. var
  1112.   _CreateAcceleratorTable: Pointer;
  1113. function CreateAcceleratorTable;
  1114. begin
  1115.   GetProcedureAddress(_CreateAcceleratorTable, user32, 'CreateAcceleratorTableW');
  1116.   asm
  1117.     mov esp, ebp
  1118.     pop ebp
  1119.     jmp [_CreateAcceleratorTable]
  1120.   end;
  1121. end;
  1122. {$ELSE}
  1123. function CreateAcceleratorTable; external user32 name 'CreateAcceleratorTableW';
  1124. {$ENDIF DYNAMIC_LINK}
  1125. {$ELSE}
  1126. {$IFDEF DYNAMIC_LINK}
  1127. var
  1128.   _CreateAcceleratorTable: Pointer;
  1129. function CreateAcceleratorTable;
  1130. begin
  1131.   GetProcedureAddress(_CreateAcceleratorTable, user32, 'CreateAcceleratorTableA');
  1132.   asm
  1133.     mov esp, ebp
  1134.     pop ebp
  1135.     jmp [_CreateAcceleratorTable]
  1136.   end;
  1137. end;
  1138. {$ELSE}
  1139. function CreateAcceleratorTable; external user32 name 'CreateAcceleratorTableA';
  1140. {$ENDIF DYNAMIC_LINK}
  1141. {$ENDIF}
  1142. {$IFDEF DYNAMIC_LINK}
  1143. var
  1144.   _DestroyAcceleratorTable: Pointer;
  1145. function DestroyAcceleratorTable;
  1146. begin
  1147.   GetProcedureAddress(_DestroyAcceleratorTable, user32, 'DestroyAcceleratorTable');
  1148.   asm
  1149.     mov esp, ebp
  1150.     pop ebp
  1151.     jmp [_DestroyAcceleratorTable]
  1152.   end;
  1153. end;
  1154. {$ELSE}
  1155. function DestroyAcceleratorTable; external user32 name 'DestroyAcceleratorTable';
  1156. {$ENDIF DYNAMIC_LINK}
  1157. {$IFDEF DYNAMIC_LINK}
  1158. var
  1159.   _CopyAcceleratorTableA: Pointer;
  1160. function CopyAcceleratorTableA;
  1161. begin
  1162.   GetProcedureAddress(_CopyAcceleratorTableA, user32, 'CopyAcceleratorTableA');
  1163.   asm
  1164.     mov esp, ebp
  1165.     pop ebp
  1166.     jmp [_CopyAcceleratorTableA]
  1167.   end;
  1168. end;
  1169. {$ELSE}
  1170. function CopyAcceleratorTableA; external user32 name 'CopyAcceleratorTableA';
  1171. {$ENDIF DYNAMIC_LINK}
  1172. {$IFDEF DYNAMIC_LINK}
  1173. var
  1174.   _CopyAcceleratorTableW: Pointer;
  1175. function CopyAcceleratorTableW;
  1176. begin
  1177.   GetProcedureAddress(_CopyAcceleratorTableW, user32, 'CopyAcceleratorTableW');
  1178.   asm
  1179.     mov esp, ebp
  1180.     pop ebp
  1181.     jmp [_CopyAcceleratorTableW]
  1182.   end;
  1183. end;
  1184. {$ELSE}
  1185. function CopyAcceleratorTableW; external user32 name 'CopyAcceleratorTableW';
  1186. {$ENDIF DYNAMIC_LINK}
  1187. {$IFDEF UNICODE}
  1188. {$IFDEF DYNAMIC_LINK}
  1189. var
  1190.   _CopyAcceleratorTable: Pointer;
  1191. function CopyAcceleratorTable;
  1192. begin
  1193.   GetProcedureAddress(_CopyAcceleratorTable, user32, 'CopyAcceleratorTableW');
  1194.   asm
  1195.     mov esp, ebp
  1196.     pop ebp
  1197.     jmp [_CopyAcceleratorTable]
  1198.   end;
  1199. end;
  1200. {$ELSE}
  1201. function CopyAcceleratorTable; external user32 name 'CopyAcceleratorTableW';
  1202. {$ENDIF DYNAMIC_LINK}
  1203. {$ELSE}
  1204. {$IFDEF DYNAMIC_LINK}
  1205. var
  1206.   _CopyAcceleratorTable: Pointer;
  1207. function CopyAcceleratorTable;
  1208. begin
  1209.   GetProcedureAddress(_CopyAcceleratorTable, user32, 'CopyAcceleratorTableA');
  1210.   asm
  1211.     mov esp, ebp
  1212.     pop ebp
  1213.     jmp [_CopyAcceleratorTable]
  1214.   end;
  1215. end;
  1216. {$ELSE}
  1217. function CopyAcceleratorTable; external user32 name 'CopyAcceleratorTableA';
  1218. {$ENDIF DYNAMIC_LINK}
  1219. {$ENDIF}
  1220. {$IFDEF DYNAMIC_LINK}
  1221. var
  1222.   _TranslateAcceleratorA: Pointer;
  1223. function TranslateAcceleratorA;
  1224. begin
  1225.   GetProcedureAddress(_TranslateAcceleratorA, user32, 'TranslateAcceleratorA');
  1226.   asm
  1227.     mov esp, ebp
  1228.     pop ebp
  1229.     jmp [_TranslateAcceleratorA]
  1230.   end;
  1231. end;
  1232. {$ELSE}
  1233. function TranslateAcceleratorA; external user32 name 'TranslateAcceleratorA';
  1234. {$ENDIF DYNAMIC_LINK}
  1235. {$IFDEF DYNAMIC_LINK}
  1236. var
  1237.   _TranslateAcceleratorW: Pointer;
  1238. function TranslateAcceleratorW;
  1239. begin
  1240.   GetProcedureAddress(_TranslateAcceleratorW, user32, 'TranslateAcceleratorW');
  1241.   asm
  1242.     mov esp, ebp
  1243.     pop ebp
  1244.     jmp [_TranslateAcceleratorW]
  1245.   end;
  1246. end;
  1247. {$ELSE}
  1248. function TranslateAcceleratorW; external user32 name 'TranslateAcceleratorW';
  1249. {$ENDIF DYNAMIC_LINK}
  1250. {$IFDEF UNICODE}
  1251. {$IFDEF DYNAMIC_LINK}
  1252. var
  1253.   _TranslateAccelerator: Pointer;
  1254. function TranslateAccelerator;
  1255. begin
  1256.   GetProcedureAddress(_TranslateAccelerator, user32, 'TranslateAcceleratorW');
  1257.   asm
  1258.     mov esp, ebp
  1259.     pop ebp
  1260.     jmp [_TranslateAccelerator]
  1261.   end;
  1262. end;
  1263. {$ELSE}
  1264. function TranslateAccelerator; external user32 name 'TranslateAcceleratorW';
  1265. {$ENDIF DYNAMIC_LINK}
  1266. {$ELSE}
  1267. {$IFDEF DYNAMIC_LINK}
  1268. var
  1269.   _TranslateAccelerator: Pointer;
  1270. function TranslateAccelerator;
  1271. begin
  1272.   GetProcedureAddress(_TranslateAccelerator, user32, 'TranslateAcceleratorA');
  1273.   asm
  1274.     mov esp, ebp
  1275.     pop ebp
  1276.     jmp [_TranslateAccelerator]
  1277.   end;
  1278. end;
  1279. {$ELSE}
  1280. function TranslateAccelerator; external user32 name 'TranslateAcceleratorA';
  1281. {$ENDIF DYNAMIC_LINK}
  1282. {$ENDIF}
  1283. {$IFDEF DYNAMIC_LINK}
  1284. var
  1285.   _GetSystemMetrics: Pointer;
  1286. function GetSystemMetrics;
  1287. begin
  1288.   GetProcedureAddress(_GetSystemMetrics, user32, 'GetSystemMetrics');
  1289.   asm
  1290.     mov esp, ebp
  1291.     pop ebp
  1292.     jmp [_GetSystemMetrics]
  1293.   end;
  1294. end;
  1295. {$ELSE}
  1296. function GetSystemMetrics; external user32 name 'GetSystemMetrics';
  1297. {$ENDIF DYNAMIC_LINK}
  1298. {$IFDEF DYNAMIC_LINK}
  1299. var
  1300.   _LoadMenuA: Pointer;
  1301. function LoadMenuA;
  1302. begin
  1303.   GetProcedureAddress(_LoadMenuA, user32, 'LoadMenuAA');
  1304.   asm
  1305.     mov esp, ebp
  1306.     pop ebp
  1307.     jmp [_LoadMenuA]
  1308.   end;
  1309. end;
  1310. {$ELSE}
  1311. function LoadMenuA; external user32 name 'LoadMenuAA';
  1312. {$ENDIF DYNAMIC_LINK}
  1313. {$IFDEF DYNAMIC_LINK}
  1314. var
  1315.   _LoadMenuW: Pointer;
  1316. function LoadMenuW;
  1317. begin
  1318.   GetProcedureAddress(_LoadMenuW, user32, 'LoadMenuWA');
  1319.   asm
  1320.     mov esp, ebp
  1321.     pop ebp
  1322.     jmp [_LoadMenuW]
  1323.   end;
  1324. end;
  1325. {$ELSE}
  1326. function LoadMenuW; external user32 name 'LoadMenuWA';
  1327. {$ENDIF DYNAMIC_LINK}
  1328. {$IFDEF UNICODE}
  1329. {$IFDEF DYNAMIC_LINK}
  1330. var
  1331.   _LoadMenu: Pointer;
  1332. function LoadMenu;
  1333. begin
  1334.   GetProcedureAddress(_LoadMenu, user32, 'LoadMenuW');
  1335.   asm
  1336.     mov esp, ebp
  1337.     pop ebp
  1338.     jmp [_LoadMenu]
  1339.   end;
  1340. end;
  1341. {$ELSE}
  1342. function LoadMenu; external user32 name 'LoadMenuW';
  1343. {$ENDIF DYNAMIC_LINK}
  1344. {$ELSE}
  1345. {$IFDEF DYNAMIC_LINK}
  1346. var
  1347.   _LoadMenu: Pointer;
  1348. function LoadMenu;
  1349. begin
  1350.   GetProcedureAddress(_LoadMenu, user32, 'LoadMenuA');
  1351.   asm
  1352.     mov esp, ebp
  1353.     pop ebp
  1354.     jmp [_LoadMenu]
  1355.   end;
  1356. end;
  1357. {$ELSE}
  1358. function LoadMenu; external user32 name 'LoadMenuA';
  1359. {$ENDIF DYNAMIC_LINK}
  1360. {$ENDIF}
  1361. {$IFDEF DYNAMIC_LINK}
  1362. var
  1363.   _LoadMenuIndirectA: Pointer;
  1364. function LoadMenuIndirectA;
  1365. begin
  1366.   GetProcedureAddress(_LoadMenuIndirectA, user32, 'LoadMenuIndirectA');
  1367.   asm
  1368.     mov esp, ebp
  1369.     pop ebp
  1370.     jmp [_LoadMenuIndirectA]
  1371.   end;
  1372. end;
  1373. {$ELSE}
  1374. function LoadMenuIndirectA; external user32 name 'LoadMenuIndirectA';
  1375. {$ENDIF DYNAMIC_LINK}
  1376. {$IFDEF DYNAMIC_LINK}
  1377. var
  1378.   _LoadMenuIndirectW: Pointer;
  1379. function LoadMenuIndirectW;
  1380. begin
  1381.   GetProcedureAddress(_LoadMenuIndirectW, user32, 'LoadMenuIndirectW');
  1382.   asm
  1383.     mov esp, ebp
  1384.     pop ebp
  1385.     jmp [_LoadMenuIndirectW]
  1386.   end;
  1387. end;
  1388. {$ELSE}
  1389. function LoadMenuIndirectW; external user32 name 'LoadMenuIndirectW';
  1390. {$ENDIF DYNAMIC_LINK}
  1391. {$IFDEF UNICODE}
  1392. {$IFDEF DYNAMIC_LINK}
  1393. var
  1394.   _LoadMenuIndirect: Pointer;
  1395. function LoadMenuIndirect;
  1396. begin
  1397.   GetProcedureAddress(_LoadMenuIndirect, user32, 'LoadMenuIndirectW');
  1398.   asm
  1399.     mov esp, ebp
  1400.     pop ebp
  1401.     jmp [_LoadMenuIndirect]
  1402.   end;
  1403. end;
  1404. {$ELSE}
  1405. function LoadMenuIndirect; external user32 name 'LoadMenuIndirectW';
  1406. {$ENDIF DYNAMIC_LINK}
  1407. {$ELSE}
  1408. {$IFDEF DYNAMIC_LINK}
  1409. var
  1410.   _LoadMenuIndirect: Pointer;
  1411. function LoadMenuIndirect;
  1412. begin
  1413.   GetProcedureAddress(_LoadMenuIndirect, user32, 'LoadMenuIndirectA');
  1414.   asm
  1415.     mov esp, ebp
  1416.     pop ebp
  1417.     jmp [_LoadMenuIndirect]
  1418.   end;
  1419. end;
  1420. {$ELSE}
  1421. function LoadMenuIndirect; external user32 name 'LoadMenuIndirectA';
  1422. {$ENDIF DYNAMIC_LINK}
  1423. {$ENDIF}
  1424. {$IFDEF DYNAMIC_LINK}
  1425. var
  1426.   _GetMenu: Pointer;
  1427. function GetMenu;
  1428. begin
  1429.   GetProcedureAddress(_GetMenu, user32, 'GetMenu');
  1430.   asm
  1431.     mov esp, ebp
  1432.     pop ebp
  1433.     jmp [_GetMenu]
  1434.   end;
  1435. end;
  1436. {$ELSE}
  1437. function GetMenu; external user32 name 'GetMenu';
  1438. {$ENDIF DYNAMIC_LINK}
  1439. {$IFDEF DYNAMIC_LINK}
  1440. var
  1441.   _SetMenu: Pointer;
  1442. function SetMenu;
  1443. begin
  1444.   GetProcedureAddress(_SetMenu, user32, 'SetMenu');
  1445.   asm
  1446.     mov esp, ebp
  1447.     pop ebp
  1448.     jmp [_SetMenu]
  1449.   end;
  1450. end;
  1451. {$ELSE}
  1452. function SetMenu; external user32 name 'SetMenu';
  1453. {$ENDIF DYNAMIC_LINK}
  1454. {$IFDEF DYNAMIC_LINK}
  1455. var
  1456.   _ChangeMenuA: Pointer;
  1457. function ChangeMenuA;
  1458. begin
  1459.   GetProcedureAddress(_ChangeMenuA, user32, 'ChangeMenuA');
  1460.   asm
  1461.     mov esp, ebp
  1462.     pop ebp
  1463.     jmp [_ChangeMenuA]
  1464.   end;
  1465. end;
  1466. {$ELSE}
  1467. function ChangeMenuA; external user32 name 'ChangeMenuA';
  1468. {$ENDIF DYNAMIC_LINK}
  1469. {$IFDEF DYNAMIC_LINK}
  1470. var
  1471.   _ChangeMenuW: Pointer;
  1472. function ChangeMenuW;
  1473. begin
  1474.   GetProcedureAddress(_ChangeMenuW, user32, 'ChangeMenuW');
  1475.   asm
  1476.     mov esp, ebp
  1477.     pop ebp
  1478.     jmp [_ChangeMenuW]
  1479.   end;
  1480. end;
  1481. {$ELSE}
  1482. function ChangeMenuW; external user32 name 'ChangeMenuW';
  1483. {$ENDIF DYNAMIC_LINK}
  1484. {$IFDEF UNICODE}
  1485. {$IFDEF DYNAMIC_LINK}
  1486. var
  1487.   _ChangeMenu: Pointer;
  1488. function ChangeMenu;
  1489. begin
  1490.   GetProcedureAddress(_ChangeMenu, user32, 'ChangeMenuW');
  1491.   asm
  1492.     mov esp, ebp
  1493.     pop ebp
  1494.     jmp [_ChangeMenu]
  1495.   end;
  1496. end;
  1497. {$ELSE}
  1498. function ChangeMenu; external user32 name 'ChangeMenuW';
  1499. {$ENDIF DYNAMIC_LINK}
  1500. {$ELSE}
  1501. {$IFDEF DYNAMIC_LINK}
  1502. var
  1503.   _ChangeMenu: Pointer;
  1504. function ChangeMenu;
  1505. begin
  1506.   GetProcedureAddress(_ChangeMenu, user32, 'ChangeMenuA');
  1507.   asm
  1508.     mov esp, ebp
  1509.     pop ebp
  1510.     jmp [_ChangeMenu]
  1511.   end;
  1512. end;
  1513. {$ELSE}
  1514. function ChangeMenu; external user32 name 'ChangeMenuA';
  1515. {$ENDIF DYNAMIC_LINK}
  1516. {$ENDIF}
  1517. {$IFDEF DYNAMIC_LINK}
  1518. var
  1519.   _HiliteMenuItem: Pointer;
  1520. function HiliteMenuItem;
  1521. begin
  1522.   GetProcedureAddress(_HiliteMenuItem, user32, 'HiliteMenuItem');
  1523.   asm
  1524.     mov esp, ebp
  1525.     pop ebp
  1526.     jmp [_HiliteMenuItem]
  1527.   end;
  1528. end;
  1529. {$ELSE}
  1530. function HiliteMenuItem; external user32 name 'HiliteMenuItem';
  1531. {$ENDIF DYNAMIC_LINK}
  1532. {$IFDEF DYNAMIC_LINK}
  1533. var
  1534.   _GetMenuStringA: Pointer;
  1535. function GetMenuStringA;
  1536. begin
  1537.   GetProcedureAddress(_GetMenuStringA, user32, 'GetMenuStringA');
  1538.   asm
  1539.     mov esp, ebp
  1540.     pop ebp
  1541.     jmp [_GetMenuStringA]
  1542.   end;
  1543. end;
  1544. {$ELSE}
  1545. function GetMenuStringA; external user32 name 'GetMenuStringA';
  1546. {$ENDIF DYNAMIC_LINK}
  1547. {$IFDEF DYNAMIC_LINK}
  1548. var
  1549.   _GetMenuStringW: Pointer;
  1550. function GetMenuStringW;
  1551. begin
  1552.   GetProcedureAddress(_GetMenuStringW, user32, 'GetMenuStringW');
  1553.   asm
  1554.     mov esp, ebp
  1555.     pop ebp
  1556.     jmp [_GetMenuStringW]
  1557.   end;
  1558. end;
  1559. {$ELSE}
  1560. function GetMenuStringW; external user32 name 'GetMenuStringW';
  1561. {$ENDIF DYNAMIC_LINK}
  1562. {$IFDEF UNICODE}
  1563. {$IFDEF DYNAMIC_LINK}
  1564. var
  1565.   _GetMenuString: Pointer;
  1566. function GetMenuString;
  1567. begin
  1568.   GetProcedureAddress(_GetMenuString, user32, 'GetMenuStringW');
  1569.   asm
  1570.     mov esp, ebp
  1571.     pop ebp
  1572.     jmp [_GetMenuString]
  1573.   end;
  1574. end;
  1575. {$ELSE}
  1576. function GetMenuString; external user32 name 'GetMenuStringW';
  1577. {$ENDIF DYNAMIC_LINK}
  1578. {$ELSE}
  1579. {$IFDEF DYNAMIC_LINK}
  1580. var
  1581.   _GetMenuString: Pointer;
  1582. function GetMenuString;
  1583. begin
  1584.   GetProcedureAddress(_GetMenuString, user32, 'GetMenuStringA');
  1585.   asm
  1586.     mov esp, ebp
  1587.     pop ebp
  1588.     jmp [_GetMenuString]
  1589.   end;
  1590. end;
  1591. {$ELSE}
  1592. function GetMenuString; external user32 name 'GetMenuStringA';
  1593. {$ENDIF DYNAMIC_LINK}
  1594. {$ENDIF}
  1595. {$IFDEF DYNAMIC_LINK}
  1596. var
  1597.   _GetMenuState: Pointer;
  1598. function GetMenuState;
  1599. begin
  1600.   GetProcedureAddress(_GetMenuState, user32, 'GetMenuState');
  1601.   asm
  1602.     mov esp, ebp
  1603.     pop ebp
  1604.     jmp [_GetMenuState]
  1605.   end;
  1606. end;
  1607. {$ELSE}
  1608. function GetMenuState; external user32 name 'GetMenuState';
  1609. {$ENDIF DYNAMIC_LINK}
  1610. {$IFDEF DYNAMIC_LINK}
  1611. var
  1612.   _DrawMenuBar: Pointer;
  1613. function DrawMenuBar;
  1614. begin
  1615.   GetProcedureAddress(_DrawMenuBar, user32, 'DrawMenuBar');
  1616.   asm
  1617.     mov esp, ebp
  1618.     pop ebp
  1619.     jmp [_DrawMenuBar]
  1620.   end;
  1621. end;
  1622. {$ELSE}
  1623. function DrawMenuBar; external user32 name 'DrawMenuBar';
  1624. {$ENDIF DYNAMIC_LINK}
  1625. {$IFDEF DYNAMIC_LINK}
  1626. var
  1627.   _GetSystemMenu: Pointer;
  1628. function GetSystemMenu;
  1629. begin
  1630.   GetProcedureAddress(_GetSystemMenu, user32, 'GetSystemMenu');
  1631.   asm
  1632.     mov esp, ebp
  1633.     pop ebp
  1634.     jmp [_GetSystemMenu]
  1635.   end;
  1636. end;
  1637. {$ELSE}
  1638. function GetSystemMenu; external user32 name 'GetSystemMenu';
  1639. {$ENDIF DYNAMIC_LINK}
  1640. {$IFDEF DYNAMIC_LINK}
  1641. var
  1642.   _CreateMenu: Pointer;
  1643. function CreateMenu;
  1644. begin
  1645.   GetProcedureAddress(_CreateMenu, user32, 'CreateMenu');
  1646.   asm
  1647.     mov esp, ebp
  1648.     pop ebp
  1649.     jmp [_CreateMenu]
  1650.   end;
  1651. end;
  1652. {$ELSE}
  1653. function CreateMenu; external user32 name 'CreateMenu';
  1654. {$ENDIF DYNAMIC_LINK}
  1655. {$IFDEF DYNAMIC_LINK}
  1656. var
  1657.   _CreatePopupMenu: Pointer;
  1658. function CreatePopupMenu;
  1659. begin
  1660.   GetProcedureAddress(_CreatePopupMenu, user32, 'CreatePopupMenu');
  1661.   asm
  1662.     mov esp, ebp
  1663.     pop ebp
  1664.     jmp [_CreatePopupMenu]
  1665.   end;
  1666. end;
  1667. {$ELSE}
  1668. function CreatePopupMenu; external user32 name 'CreatePopupMenu';
  1669. {$ENDIF DYNAMIC_LINK}
  1670. {$IFDEF DYNAMIC_LINK}
  1671. var
  1672.   _DestroyMenu: Pointer;
  1673. function DestroyMenu;
  1674. begin
  1675.   GetProcedureAddress(_DestroyMenu, user32, 'DestroyMenu');
  1676.   asm
  1677.     mov esp, ebp
  1678.     pop ebp
  1679.     jmp [_DestroyMenu]
  1680.   end;
  1681. end;
  1682. {$ELSE}
  1683. function DestroyMenu; external user32 name 'DestroyMenu';
  1684. {$ENDIF DYNAMIC_LINK}
  1685. {$IFDEF DYNAMIC_LINK}
  1686. var
  1687.   _CheckMenuItem: Pointer;
  1688. function CheckMenuItem;
  1689. begin
  1690.   GetProcedureAddress(_CheckMenuItem, user32, 'CheckMenuItem');
  1691.   asm
  1692.     mov esp, ebp
  1693.     pop ebp
  1694.     jmp [_CheckMenuItem]
  1695.   end;
  1696. end;
  1697. {$ELSE}
  1698. function CheckMenuItem; external user32 name 'CheckMenuItem';
  1699. {$ENDIF DYNAMIC_LINK}
  1700. {$IFDEF DYNAMIC_LINK}
  1701. var
  1702.   _EnableMenuItem: Pointer;
  1703. function EnableMenuItem;
  1704. begin
  1705.   GetProcedureAddress(_EnableMenuItem, user32, 'EnableMenuItem');
  1706.   asm
  1707.     mov esp, ebp
  1708.     pop ebp
  1709.     jmp [_EnableMenuItem]
  1710.   end;
  1711. end;
  1712. {$ELSE}
  1713. function EnableMenuItem; external user32 name 'EnableMenuItem';
  1714. {$ENDIF DYNAMIC_LINK}
  1715. {$IFDEF DYNAMIC_LINK}
  1716. var
  1717.   _GetSubMenu: Pointer;
  1718. function GetSubMenu;
  1719. begin
  1720.   GetProcedureAddress(_GetSubMenu, user32, 'GetSubMenu');
  1721.   asm
  1722.     mov esp, ebp
  1723.     pop ebp
  1724.     jmp [_GetSubMenu]
  1725.   end;
  1726. end;
  1727. {$ELSE}
  1728. function GetSubMenu; external user32 name 'GetSubMenu';
  1729. {$ENDIF DYNAMIC_LINK}
  1730. {$IFDEF DYNAMIC_LINK}
  1731. var
  1732.   _GetMenuItemID: Pointer;
  1733. function GetMenuItemID;
  1734. begin
  1735.   GetProcedureAddress(_GetMenuItemID, user32, 'GetMenuItemID');
  1736.   asm
  1737.     mov esp, ebp
  1738.     pop ebp
  1739.     jmp [_GetMenuItemID]
  1740.   end;
  1741. end;
  1742. {$ELSE}
  1743. function GetMenuItemID; external user32 name 'GetMenuItemID';
  1744. {$ENDIF DYNAMIC_LINK}
  1745. {$IFDEF DYNAMIC_LINK}
  1746. var
  1747.   _GetMenuItemCount: Pointer;
  1748. function GetMenuItemCount;
  1749. begin
  1750.   GetProcedureAddress(_GetMenuItemCount, user32, 'GetMenuItemCount');
  1751.   asm
  1752.     mov esp, ebp
  1753.     pop ebp
  1754.     jmp [_GetMenuItemCount]
  1755.   end;
  1756. end;
  1757. {$ELSE}
  1758. function GetMenuItemCount; external user32 name 'GetMenuItemCount';
  1759. {$ENDIF DYNAMIC_LINK}
  1760. {$IFDEF DYNAMIC_LINK}
  1761. var
  1762.   _InsertMenuA: Pointer;
  1763. function InsertMenuA;
  1764. begin
  1765.   GetProcedureAddress(_InsertMenuA, user32, 'InsertMenuA');
  1766.   asm
  1767.     mov esp, ebp
  1768.     pop ebp
  1769.     jmp [_InsertMenuA]
  1770.   end;
  1771. end;
  1772. {$ELSE}
  1773. function InsertMenuA; external user32 name 'InsertMenuA';
  1774. {$ENDIF DYNAMIC_LINK}
  1775. {$IFDEF DYNAMIC_LINK}
  1776. var
  1777.   _InsertMenuW: Pointer;
  1778. function InsertMenuW;
  1779. begin
  1780.   GetProcedureAddress(_InsertMenuW, user32, 'InsertMenuW');
  1781.   asm
  1782.     mov esp, ebp
  1783.     pop ebp
  1784.     jmp [_InsertMenuW]
  1785.   end;
  1786. end;
  1787. {$ELSE}
  1788. function InsertMenuW; external user32 name 'InsertMenuW';
  1789. {$ENDIF DYNAMIC_LINK}
  1790. {$IFDEF UNICODE}
  1791. {$IFDEF DYNAMIC_LINK}
  1792. var
  1793.   _InsertMenu: Pointer;
  1794. function InsertMenu;
  1795. begin
  1796.   GetProcedureAddress(_InsertMenu, user32, 'InsertMenuW');
  1797.   asm
  1798.     mov esp, ebp
  1799.     pop ebp
  1800.     jmp [_InsertMenu]
  1801.   end;
  1802. end;
  1803. {$ELSE}
  1804. function InsertMenu; external user32 name 'InsertMenuW';
  1805. {$ENDIF DYNAMIC_LINK}
  1806. {$ELSE}
  1807. {$IFDEF DYNAMIC_LINK}
  1808. var
  1809.   _InsertMenu: Pointer;
  1810. function InsertMenu;
  1811. begin
  1812.   GetProcedureAddress(_InsertMenu, user32, 'InsertMenuA');
  1813.   asm
  1814.     mov esp, ebp
  1815.     pop ebp
  1816.     jmp [_InsertMenu]
  1817.   end;
  1818. end;
  1819. {$ELSE}
  1820. function InsertMenu; external user32 name 'InsertMenuA';
  1821. {$ENDIF DYNAMIC_LINK}
  1822. {$ENDIF}
  1823. {$IFDEF DYNAMIC_LINK}
  1824. var
  1825.   _AppendMenuA: Pointer;
  1826. function AppendMenuA;
  1827. begin
  1828.   GetProcedureAddress(_AppendMenuA, user32, 'AppendMenuA');
  1829.   asm
  1830.     mov esp, ebp
  1831.     pop ebp
  1832.     jmp [_AppendMenuA]
  1833.   end;
  1834. end;
  1835. {$ELSE}
  1836. function AppendMenuA; external user32 name 'AppendMenuA';
  1837. {$ENDIF DYNAMIC_LINK}
  1838. {$IFDEF DYNAMIC_LINK}
  1839. var
  1840.   _AppendMenuW: Pointer;
  1841. function AppendMenuW;
  1842. begin
  1843.   GetProcedureAddress(_AppendMenuW, user32, 'AppendMenuW');
  1844.   asm
  1845.     mov esp, ebp
  1846.     pop ebp
  1847.     jmp [_AppendMenuW]
  1848.   end;
  1849. end;
  1850. {$ELSE}
  1851. function AppendMenuW; external user32 name 'AppendMenuW';
  1852. {$ENDIF DYNAMIC_LINK}
  1853. {$IFDEF UNICODE}
  1854. {$IFDEF DYNAMIC_LINK}
  1855. var
  1856.   _AppendMenu: Pointer;
  1857. function AppendMenu;
  1858. begin
  1859.   GetProcedureAddress(_AppendMenu, user32, 'AppendMenuW');
  1860.   asm
  1861.     mov esp, ebp
  1862.     pop ebp
  1863.     jmp [_AppendMenu]
  1864.   end;
  1865. end;
  1866. {$ELSE}
  1867. function AppendMenu; external user32 name 'AppendMenuW';
  1868. {$ENDIF DYNAMIC_LINK}
  1869. {$ELSE}
  1870. {$IFDEF DYNAMIC_LINK}
  1871. var
  1872.   _AppendMenu: Pointer;
  1873. function AppendMenu;
  1874. begin
  1875.   GetProcedureAddress(_AppendMenu, user32, 'AppendMenuA');
  1876.   asm
  1877.     mov esp, ebp
  1878.     pop ebp
  1879.     jmp [_AppendMenu]
  1880.   end;
  1881. end;
  1882. {$ELSE}
  1883. function AppendMenu; external user32 name 'AppendMenuA';
  1884. {$ENDIF DYNAMIC_LINK}
  1885. {$ENDIF}
  1886. {$IFDEF DYNAMIC_LINK}
  1887. var
  1888.   _ModifyMenuA: Pointer;
  1889. function ModifyMenuA;
  1890. begin
  1891.   GetProcedureAddress(_ModifyMenuA, user32, 'ModifyMenuA');
  1892.   asm
  1893.     mov esp, ebp
  1894.     pop ebp
  1895.     jmp [_ModifyMenuA]
  1896.   end;
  1897. end;
  1898. {$ELSE}
  1899. function ModifyMenuA; external user32 name 'ModifyMenuA';
  1900. {$ENDIF DYNAMIC_LINK}
  1901. {$IFDEF DYNAMIC_LINK}
  1902. var
  1903.   _ModifyMenuW: Pointer;
  1904. function ModifyMenuW;
  1905. begin
  1906.   GetProcedureAddress(_ModifyMenuW, user32, 'ModifyMenuW');
  1907.   asm
  1908.     mov esp, ebp
  1909.     pop ebp
  1910.     jmp [_ModifyMenuW]
  1911.   end;
  1912. end;
  1913. {$ELSE}
  1914. function ModifyMenuW; external user32 name 'ModifyMenuW';
  1915. {$ENDIF DYNAMIC_LINK}
  1916. {$IFDEF UNICODE}
  1917. {$IFDEF DYNAMIC_LINK}
  1918. var
  1919.   _ModifyMenu: Pointer;
  1920. function ModifyMenu;
  1921. begin
  1922.   GetProcedureAddress(_ModifyMenu, user32, 'ModifyMenuW');
  1923.   asm
  1924.     mov esp, ebp
  1925.     pop ebp
  1926.     jmp [_ModifyMenu]
  1927.   end;
  1928. end;
  1929. {$ELSE}
  1930. function ModifyMenu; external user32 name 'ModifyMenuW';
  1931. {$ENDIF DYNAMIC_LINK}
  1932. {$ELSE}
  1933. {$IFDEF DYNAMIC_LINK}
  1934. var
  1935.   _ModifyMenu: Pointer;
  1936. function ModifyMenu;
  1937. begin
  1938.   GetProcedureAddress(_ModifyMenu, user32, 'ModifyMenuA');
  1939.   asm
  1940.     mov esp, ebp
  1941.     pop ebp
  1942.     jmp [_ModifyMenu]
  1943.   end;
  1944. end;
  1945. {$ELSE}
  1946. function ModifyMenu; external user32 name 'ModifyMenuA';
  1947. {$ENDIF DYNAMIC_LINK}
  1948. {$ENDIF}
  1949. {$IFDEF DYNAMIC_LINK}
  1950. var
  1951.   _RemoveMenu: Pointer;
  1952. function RemoveMenu;
  1953. begin
  1954.   GetProcedureAddress(_RemoveMenu, user32, 'RemoveMenu');
  1955.   asm
  1956.     mov esp, ebp
  1957.     pop ebp
  1958.     jmp [_RemoveMenu]
  1959.   end;
  1960. end;
  1961. {$ELSE}
  1962. function RemoveMenu; external user32 name 'RemoveMenu';
  1963. {$ENDIF DYNAMIC_LINK}
  1964. {$IFDEF DYNAMIC_LINK}
  1965. var
  1966.   _DeleteMenu: Pointer;
  1967. function DeleteMenu;
  1968. begin
  1969.   GetProcedureAddress(_DeleteMenu, user32, 'DeleteMenu');
  1970.   asm
  1971.     mov esp, ebp
  1972.     pop ebp
  1973.     jmp [_DeleteMenu]
  1974.   end;
  1975. end;
  1976. {$ELSE}
  1977. function DeleteMenu; external user32 name 'DeleteMenu';
  1978. {$ENDIF DYNAMIC_LINK}
  1979. {$IFDEF DYNAMIC_LINK}
  1980. var
  1981.   _SetMenuItemBitmaps: Pointer;
  1982. function SetMenuItemBitmaps;
  1983. begin
  1984.   GetProcedureAddress(_SetMenuItemBitmaps, user32, 'SetMenuItemBitmaps');
  1985.   asm
  1986.     mov esp, ebp
  1987.     pop ebp
  1988.     jmp [_SetMenuItemBitmaps]
  1989.   end;
  1990. end;
  1991. {$ELSE}
  1992. function SetMenuItemBitmaps; external user32 name 'SetMenuItemBitmaps';
  1993. {$ENDIF DYNAMIC_LINK}
  1994. {$IFDEF DYNAMIC_LINK}
  1995. var
  1996.   _GetMenuCheckMarkDimensions: Pointer;
  1997. function GetMenuCheckMarkDimensions;
  1998. begin
  1999.   GetProcedureAddress(_GetMenuCheckMarkDimensions, user32, 'GetMenuCheckMarkDimensions');
  2000.   asm
  2001.     mov esp, ebp
  2002.     pop ebp
  2003.     jmp [_GetMenuCheckMarkDimensions]
  2004.   end;
  2005. end;
  2006. {$ELSE}
  2007. function GetMenuCheckMarkDimensions; external user32 name 'GetMenuCheckMarkDimensions';
  2008. {$ENDIF DYNAMIC_LINK}
  2009. {$IFDEF DYNAMIC_LINK}
  2010. var
  2011.   _TrackPopupMenu: Pointer;
  2012. function TrackPopupMenu;
  2013. begin
  2014.   GetProcedureAddress(_TrackPopupMenu, user32, 'TrackPopupMenu');
  2015.   asm
  2016.     mov esp, ebp
  2017.     pop ebp
  2018.     jmp [_TrackPopupMenu]
  2019.   end;
  2020. end;
  2021. {$ELSE}
  2022. function TrackPopupMenu; external user32 name 'TrackPopupMenu';
  2023. {$ENDIF DYNAMIC_LINK}
  2024. {$IFDEF DYNAMIC_LINK}
  2025. var
  2026.   _TrackPopupMenuEx: Pointer;
  2027. function TrackPopupMenuEx;
  2028. begin
  2029.   GetProcedureAddress(_TrackPopupMenuEx, user32, 'TrackPopupMenuEx');
  2030.   asm
  2031.     mov esp, ebp
  2032.     pop ebp
  2033.     jmp [_TrackPopupMenuEx]
  2034.   end;
  2035. end;
  2036. {$ELSE}
  2037. function TrackPopupMenuEx; external user32 name 'TrackPopupMenuEx';
  2038. {$ENDIF DYNAMIC_LINK}
  2039. {$IFDEF DYNAMIC_LINK}
  2040. var
  2041.   _GetMenuInfo: Pointer;
  2042. function GetMenuInfo;
  2043. begin
  2044.   GetProcedureAddress(_GetMenuInfo, user32, 'GetMenuInfo');
  2045.   asm
  2046.     mov esp, ebp
  2047.     pop ebp
  2048.     jmp [_GetMenuInfo]
  2049.   end;
  2050. end;
  2051. {$ELSE}
  2052. function GetMenuInfo; external user32 name 'GetMenuInfo';
  2053. {$ENDIF DYNAMIC_LINK}
  2054. {$IFDEF DYNAMIC_LINK}
  2055. var
  2056.   _SetMenuInfo: Pointer;
  2057. function SetMenuInfo;
  2058. begin
  2059.   GetProcedureAddress(_SetMenuInfo, user32, 'SetMenuInfo');
  2060.   asm
  2061.     mov esp, ebp
  2062.     pop ebp
  2063.     jmp [_SetMenuInfo]
  2064.   end;
  2065. end;
  2066. {$ELSE}
  2067. function SetMenuInfo; external user32 name 'SetMenuInfo';
  2068. {$ENDIF DYNAMIC_LINK}
  2069. {$IFDEF DYNAMIC_LINK}
  2070. var
  2071.   _EndMenu: Pointer;
  2072. function EndMenu;
  2073. begin
  2074.   GetProcedureAddress(_EndMenu, user32, 'EndMenu');
  2075.   asm
  2076.     mov esp, ebp
  2077.     pop ebp
  2078.     jmp [_EndMenu]
  2079.   end;
  2080. end;
  2081. {$ELSE}
  2082. function EndMenu; external user32 name 'EndMenu';
  2083. {$ENDIF DYNAMIC_LINK}
  2084. {$IFDEF DYNAMIC_LINK}
  2085. var
  2086.   _InsertMenuItemA: Pointer;
  2087. function InsertMenuItemA;
  2088. begin
  2089.   GetProcedureAddress(_InsertMenuItemA, user32, 'InsertMenuItemA');
  2090.   asm
  2091.     mov esp, ebp
  2092.     pop ebp
  2093.     jmp [_InsertMenuItemA]
  2094.   end;
  2095. end;
  2096. {$ELSE}
  2097. function InsertMenuItemA; external user32 name 'InsertMenuItemA';
  2098. {$ENDIF DYNAMIC_LINK}
  2099. {$IFDEF DYNAMIC_LINK}
  2100. var
  2101.   _InsertMenuItemW: Pointer;
  2102. function InsertMenuItemW;
  2103. begin
  2104.   GetProcedureAddress(_InsertMenuItemW, user32, 'InsertMenuItemW');
  2105.   asm
  2106.     mov esp, ebp
  2107.     pop ebp
  2108.     jmp [_InsertMenuItemW]
  2109.   end;
  2110. end;
  2111. {$ELSE}
  2112. function InsertMenuItemW; external user32 name 'InsertMenuItemW';
  2113. {$ENDIF DYNAMIC_LINK}
  2114. {$IFDEF UNICODE}
  2115. {$IFDEF DYNAMIC_LINK}
  2116. var
  2117.   _InsertMenuItem: Pointer;
  2118. function InsertMenuItem;
  2119. begin
  2120.   GetProcedureAddress(_InsertMenuItem, user32, 'InsertMenuItemW');
  2121.   asm
  2122.     mov esp, ebp
  2123.     pop ebp
  2124.     jmp [_InsertMenuItem]
  2125.   end;
  2126. end;
  2127. {$ELSE}
  2128. function InsertMenuItem; external user32 name 'InsertMenuItemW';
  2129. {$ENDIF DYNAMIC_LINK}
  2130. {$ELSE}
  2131. {$IFDEF DYNAMIC_LINK}
  2132. var
  2133.   _InsertMenuItem: Pointer;
  2134. function InsertMenuItem;
  2135. begin
  2136.   GetProcedureAddress(_InsertMenuItem, user32, 'InsertMenuItemA');
  2137.   asm
  2138.     mov esp, ebp
  2139.     pop ebp
  2140.     jmp [_InsertMenuItem]
  2141.   end;
  2142. end;
  2143. {$ELSE}
  2144. function InsertMenuItem; external user32 name 'InsertMenuItemA';
  2145. {$ENDIF DYNAMIC_LINK}
  2146. {$ENDIF}
  2147. {$IFDEF DYNAMIC_LINK}
  2148. var
  2149.   _GetMenuItemInfoA: Pointer;
  2150. function GetMenuItemInfoA;
  2151. begin
  2152.   GetProcedureAddress(_GetMenuItemInfoA, user32, 'GetMenuItemInfoA');
  2153.   asm
  2154.     mov esp, ebp
  2155.     pop ebp
  2156.     jmp [_GetMenuItemInfoA]
  2157.   end;
  2158. end;
  2159. {$ELSE}
  2160. function GetMenuItemInfoA; external user32 name 'GetMenuItemInfoA';
  2161. {$ENDIF DYNAMIC_LINK}
  2162. {$IFDEF DYNAMIC_LINK}
  2163. var
  2164.   _GetMenuItemInfoW: Pointer;
  2165. function GetMenuItemInfoW;
  2166. begin
  2167.   GetProcedureAddress(_GetMenuItemInfoW, user32, 'GetMenuItemInfoW');
  2168.   asm
  2169.     mov esp, ebp
  2170.     pop ebp
  2171.     jmp [_GetMenuItemInfoW]
  2172.   end;
  2173. end;
  2174. {$ELSE}
  2175. function GetMenuItemInfoW; external user32 name 'GetMenuItemInfoW';
  2176. {$ENDIF DYNAMIC_LINK}
  2177. {$IFDEF UNICODE}
  2178. {$IFDEF DYNAMIC_LINK}
  2179. var
  2180.   _GetMenuItemInfo: Pointer;
  2181. function GetMenuItemInfo;
  2182. begin
  2183.   GetProcedureAddress(_GetMenuItemInfo, user32, 'GetMenuItemInfoW');
  2184.   asm
  2185.     mov esp, ebp
  2186.     pop ebp
  2187.     jmp [_GetMenuItemInfo]
  2188.   end;
  2189. end;
  2190. {$ELSE}
  2191. function GetMenuItemInfo; external user32 name 'GetMenuItemInfoW';
  2192. {$ENDIF DYNAMIC_LINK}
  2193. {$ELSE}
  2194. {$IFDEF DYNAMIC_LINK}
  2195. var
  2196.   _GetMenuItemInfo: Pointer;
  2197. function GetMenuItemInfo;
  2198. begin
  2199.   GetProcedureAddress(_GetMenuItemInfo, user32, 'GetMenuItemInfoA');
  2200.   asm
  2201.     mov esp, ebp
  2202.     pop ebp
  2203.     jmp [_GetMenuItemInfo]
  2204.   end;
  2205. end;
  2206. {$ELSE}
  2207. function GetMenuItemInfo; external user32 name 'GetMenuItemInfoA';
  2208. {$ENDIF DYNAMIC_LINK}
  2209. {$ENDIF}
  2210. {$IFDEF DYNAMIC_LINK}
  2211. var
  2212.   _SetMenuItemInfoA: Pointer;
  2213. function SetMenuItemInfoA;
  2214. begin
  2215.   GetProcedureAddress(_SetMenuItemInfoA, user32, 'SetMenuItemInfoA');
  2216.   asm
  2217.     mov esp, ebp
  2218.     pop ebp
  2219.     jmp [_SetMenuItemInfoA]
  2220.   end;
  2221. end;
  2222. {$ELSE}
  2223. function SetMenuItemInfoA; external user32 name 'SetMenuItemInfoA';
  2224. {$ENDIF DYNAMIC_LINK}
  2225. {$IFDEF DYNAMIC_LINK}
  2226. var
  2227.   _SetMenuItemInfoW: Pointer;
  2228. function SetMenuItemInfoW;
  2229. begin
  2230.   GetProcedureAddress(_SetMenuItemInfoW, user32, 'SetMenuItemInfoW');
  2231.   asm
  2232.     mov esp, ebp
  2233.     pop ebp
  2234.     jmp [_SetMenuItemInfoW]
  2235.   end;
  2236. end;
  2237. {$ELSE}
  2238. function SetMenuItemInfoW; external user32 name 'SetMenuItemInfoW';
  2239. {$ENDIF DYNAMIC_LINK}
  2240. {$IFDEF UNICODE}
  2241. {$IFDEF DYNAMIC_LINK}
  2242. var
  2243.   _SetMenuItemInfo: Pointer;
  2244. function SetMenuItemInfo;
  2245. begin
  2246.   GetProcedureAddress(_SetMenuItemInfo, user32, 'SetMenuItemInfoW');
  2247.   asm
  2248.     mov esp, ebp
  2249.     pop ebp
  2250.     jmp [_SetMenuItemInfo]
  2251.   end;
  2252. end;
  2253. {$ELSE}
  2254. function SetMenuItemInfo; external user32 name 'SetMenuItemInfoW';
  2255. {$ENDIF DYNAMIC_LINK}
  2256. {$ELSE}
  2257. {$IFDEF DYNAMIC_LINK}
  2258. var
  2259.   _SetMenuItemInfo: Pointer;
  2260. function SetMenuItemInfo;
  2261. begin
  2262.   GetProcedureAddress(_SetMenuItemInfo, user32, 'SetMenuItemInfoA');
  2263.   asm
  2264.     mov esp, ebp
  2265.     pop ebp
  2266.     jmp [_SetMenuItemInfo]
  2267.   end;
  2268. end;
  2269. {$ELSE}
  2270. function SetMenuItemInfo; external user32 name 'SetMenuItemInfoA';
  2271. {$ENDIF DYNAMIC_LINK}
  2272. {$ENDIF}
  2273. {$IFDEF DYNAMIC_LINK}
  2274. var
  2275.   _GetMenuDefaultItem: Pointer;
  2276. function GetMenuDefaultItem;
  2277. begin
  2278.   GetProcedureAddress(_GetMenuDefaultItem, user32, 'GetMenuDefaultItem');
  2279.   asm
  2280.     mov esp, ebp
  2281.     pop ebp
  2282.     jmp [_GetMenuDefaultItem]
  2283.   end;
  2284. end;
  2285. {$ELSE}
  2286. function GetMenuDefaultItem; external user32 name 'GetMenuDefaultItem';
  2287. {$ENDIF DYNAMIC_LINK}
  2288. {$IFDEF DYNAMIC_LINK}
  2289. var
  2290.   _SetMenuDefaultItem: Pointer;
  2291. function SetMenuDefaultItem;
  2292. begin
  2293.   GetProcedureAddress(_SetMenuDefaultItem, user32, 'SetMenuDefaultItem');
  2294.   asm
  2295.     mov esp, ebp
  2296.     pop ebp
  2297.     jmp [_SetMenuDefaultItem]
  2298.   end;
  2299. end;
  2300. {$ELSE}
  2301. function SetMenuDefaultItem; external user32 name 'SetMenuDefaultItem';
  2302. {$ENDIF DYNAMIC_LINK}
  2303. {$IFDEF DYNAMIC_LINK}
  2304. var
  2305.   _GetMenuItemRect: Pointer;
  2306. function GetMenuItemRect;
  2307. begin
  2308.   GetProcedureAddress(_GetMenuItemRect, user32, 'GetMenuItemRect');
  2309.   asm
  2310.     mov esp, ebp
  2311.     pop ebp
  2312.     jmp [_GetMenuItemRect]
  2313.   end;
  2314. end;
  2315. {$ELSE}
  2316. function GetMenuItemRect; external user32 name 'GetMenuItemRect';
  2317. {$ENDIF DYNAMIC_LINK}
  2318. {$IFDEF DYNAMIC_LINK}
  2319. var
  2320.   _MenuItemFromPoint: Pointer;
  2321. function MenuItemFromPoint;
  2322. begin
  2323.   GetProcedureAddress(_MenuItemFromPoint, user32, 'MenuItemFromPoint');
  2324.   asm
  2325.     mov esp, ebp
  2326.     pop ebp
  2327.     jmp [_MenuItemFromPoint]
  2328.   end;
  2329. end;
  2330. {$ELSE}
  2331. function MenuItemFromPoint; external user32 name 'MenuItemFromPoint';
  2332. {$ENDIF DYNAMIC_LINK}
  2333. {$IFDEF DYNAMIC_LINK}
  2334. var
  2335.   _DragObject: Pointer;
  2336. function DragObject;
  2337. begin
  2338.   GetProcedureAddress(_DragObject, user32, 'DragObject');
  2339.   asm
  2340.     mov esp, ebp
  2341.     pop ebp
  2342.     jmp [_DragObject]
  2343.   end;
  2344. end;
  2345. {$ELSE}
  2346. function DragObject; external user32 name 'DragObject';
  2347. {$ENDIF DYNAMIC_LINK}
  2348. {$IFDEF DYNAMIC_LINK}
  2349. var
  2350.   _DragDetect: Pointer;
  2351. function DragDetect;
  2352. begin
  2353.   GetProcedureAddress(_DragDetect, user32, 'DragDetect');
  2354.   asm
  2355.     mov esp, ebp
  2356.     pop ebp
  2357.     jmp [_DragDetect]
  2358.   end;
  2359. end;
  2360. {$ELSE}
  2361. function DragDetect; external user32 name 'DragDetect';
  2362. {$ENDIF DYNAMIC_LINK}
  2363. {$IFDEF DYNAMIC_LINK}
  2364. var
  2365.   _DrawIcon: Pointer;
  2366. function DrawIcon;
  2367. begin
  2368.   GetProcedureAddress(_DrawIcon, user32, 'DrawIcon');
  2369.   asm
  2370.     mov esp, ebp
  2371.     pop ebp
  2372.     jmp [_DrawIcon]
  2373.   end;
  2374. end;
  2375. {$ELSE}
  2376. function DrawIcon; external user32 name 'DrawIcon';
  2377. {$ENDIF DYNAMIC_LINK}
  2378. {$IFDEF DYNAMIC_LINK}
  2379. var
  2380.   _DrawTextA: Pointer;
  2381. function DrawTextA;
  2382. begin
  2383.   GetProcedureAddress(_DrawTextA, user32, 'DrawTextA');
  2384.   asm
  2385.     mov esp, ebp
  2386.     pop ebp
  2387.     jmp [_DrawTextA]
  2388.   end;
  2389. end;
  2390. {$ELSE}
  2391. function DrawTextA; external user32 name 'DrawTextA';
  2392. {$ENDIF DYNAMIC_LINK}
  2393. {$IFDEF DYNAMIC_LINK}
  2394. var
  2395.   _DrawTextW: Pointer;
  2396. function DrawTextW;
  2397. begin
  2398.   GetProcedureAddress(_DrawTextW, user32, 'DrawTextW');
  2399.   asm
  2400.     mov esp, ebp
  2401.     pop ebp
  2402.     jmp [_DrawTextW]
  2403.   end;
  2404. end;
  2405. {$ELSE}
  2406. function DrawTextW; external user32 name 'DrawTextW';
  2407. {$ENDIF DYNAMIC_LINK}
  2408. {$IFDEF UNICODE}
  2409. {$IFDEF DYNAMIC_LINK}
  2410. var
  2411.   _DrawText: Pointer;
  2412. function DrawText;
  2413. begin
  2414.   GetProcedureAddress(_DrawText, user32, 'DrawTextW');
  2415.   asm
  2416.     mov esp, ebp
  2417.     pop ebp
  2418.     jmp [_DrawText]
  2419.   end;
  2420. end;
  2421. {$ELSE}
  2422. function DrawText; external user32 name 'DrawTextW';
  2423. {$ENDIF DYNAMIC_LINK}
  2424. {$ELSE}
  2425. {$IFDEF DYNAMIC_LINK}
  2426. var
  2427.   _DrawText: Pointer;
  2428. function DrawText;
  2429. begin
  2430.   GetProcedureAddress(_DrawText, user32, 'DrawTextA');
  2431.   asm
  2432.     mov esp, ebp
  2433.     pop ebp
  2434.     jmp [_DrawText]
  2435.   end;
  2436. end;
  2437. {$ELSE}
  2438. function DrawText; external user32 name 'DrawTextA';
  2439. {$ENDIF DYNAMIC_LINK}
  2440. {$ENDIF}
  2441. {$IFDEF DYNAMIC_LINK}
  2442. var
  2443.   _DrawTextExA: Pointer;
  2444. function DrawTextExA;
  2445. begin
  2446.   GetProcedureAddress(_DrawTextExA, user32, 'DrawTextExA');
  2447.   asm
  2448.     mov esp, ebp
  2449.     pop ebp
  2450.     jmp [_DrawTextExA]
  2451.   end;
  2452. end;
  2453. {$ELSE}
  2454. function DrawTextExA; external user32 name 'DrawTextExA';
  2455. {$ENDIF DYNAMIC_LINK}
  2456. {$IFDEF DYNAMIC_LINK}
  2457. var
  2458.   _DrawTextExW: Pointer;
  2459. function DrawTextExW;
  2460. begin
  2461.   GetProcedureAddress(_DrawTextExW, user32, 'DrawTextExW');
  2462.   asm
  2463.     mov esp, ebp
  2464.     pop ebp
  2465.     jmp [_DrawTextExW]
  2466.   end;
  2467. end;
  2468. {$ELSE}
  2469. function DrawTextExW; external user32 name 'DrawTextExW';
  2470. {$ENDIF DYNAMIC_LINK}
  2471. {$IFDEF UNICODE}
  2472. {$IFDEF DYNAMIC_LINK}
  2473. var
  2474.   _DrawTextEx: Pointer;
  2475. function DrawTextEx;
  2476. begin
  2477.   GetProcedureAddress(_DrawTextEx, user32, 'DrawTextExW');
  2478.   asm
  2479.     mov esp, ebp
  2480.     pop ebp
  2481.     jmp [_DrawTextEx]
  2482.   end;
  2483. end;
  2484. {$ELSE}
  2485. function DrawTextEx; external user32 name 'DrawTextExW';
  2486. {$ENDIF DYNAMIC_LINK}
  2487. {$ELSE}
  2488. {$IFDEF DYNAMIC_LINK}
  2489. var
  2490.   _DrawTextEx: Pointer;
  2491. function DrawTextEx;
  2492. begin
  2493.   GetProcedureAddress(_DrawTextEx, user32, 'DrawTextExA');
  2494.   asm
  2495.     mov esp, ebp
  2496.     pop ebp
  2497.     jmp [_DrawTextEx]
  2498.   end;
  2499. end;
  2500. {$ELSE}
  2501. function DrawTextEx; external user32 name 'DrawTextExA';
  2502. {$ENDIF DYNAMIC_LINK}
  2503. {$ENDIF}
  2504. {$IFDEF DYNAMIC_LINK}
  2505. var
  2506.   _GrayStringA: Pointer;
  2507. function GrayStringA;
  2508. begin
  2509.   GetProcedureAddress(_GrayStringA, user32, 'GrayStringA');
  2510.   asm
  2511.     mov esp, ebp
  2512.     pop ebp
  2513.     jmp [_GrayStringA]
  2514.   end;
  2515. end;
  2516. {$ELSE}
  2517. function GrayStringA; external user32 name 'GrayStringA';
  2518. {$ENDIF DYNAMIC_LINK}
  2519. {$IFDEF DYNAMIC_LINK}
  2520. var
  2521.   _GrayStringW: Pointer;
  2522. function GrayStringW;
  2523. begin
  2524.   GetProcedureAddress(_GrayStringW, user32, 'GrayStringW');
  2525.   asm
  2526.     mov esp, ebp
  2527.     pop ebp
  2528.     jmp [_GrayStringW]
  2529.   end;
  2530. end;
  2531. {$ELSE}
  2532. function GrayStringW; external user32 name 'GrayStringW';
  2533. {$ENDIF DYNAMIC_LINK}
  2534. {$IFDEF UNICODE}
  2535. {$IFDEF DYNAMIC_LINK}
  2536. var
  2537.   _GrayString: Pointer;
  2538. function GrayString;
  2539. begin
  2540.   GetProcedureAddress(_GrayString, user32, 'GrayStringW');
  2541.   asm
  2542.     mov esp, ebp
  2543.     pop ebp
  2544.     jmp [_GrayString]
  2545.   end;
  2546. end;
  2547. {$ELSE}
  2548. function GrayString; external user32 name 'GrayStringW';
  2549. {$ENDIF DYNAMIC_LINK}
  2550. {$ELSE}
  2551. {$IFDEF DYNAMIC_LINK}
  2552. var
  2553.   _GrayString: Pointer;
  2554. function GrayString;
  2555. begin
  2556.   GetProcedureAddress(_GrayString, user32, 'GrayStringA');
  2557.   asm
  2558.     mov esp, ebp
  2559.     pop ebp
  2560.     jmp [_GrayString]
  2561.   end;
  2562. end;
  2563. {$ELSE}
  2564. function GrayString; external user32 name 'GrayStringA';
  2565. {$ENDIF DYNAMIC_LINK}
  2566. {$ENDIF}
  2567. {$IFDEF DYNAMIC_LINK}
  2568. var
  2569.   _DrawStateA: Pointer;
  2570. function DrawStateA;
  2571. begin
  2572.   GetProcedureAddress(_DrawStateA, user32, 'DrawStateA');
  2573.   asm
  2574.     mov esp, ebp
  2575.     pop ebp
  2576.     jmp [_DrawStateA]
  2577.   end;
  2578. end;
  2579. {$ELSE}
  2580. function DrawStateA; external user32 name 'DrawStateA';
  2581. {$ENDIF DYNAMIC_LINK}
  2582. {$IFDEF DYNAMIC_LINK}
  2583. var
  2584.   _DrawStateW: Pointer;
  2585. function DrawStateW;
  2586. begin
  2587.   GetProcedureAddress(_DrawStateW, user32, 'DrawStateW');
  2588.   asm
  2589.     mov esp, ebp
  2590.     pop ebp
  2591.     jmp [_DrawStateW]
  2592.   end;
  2593. end;
  2594. {$ELSE}
  2595. function DrawStateW; external user32 name 'DrawStateW';
  2596. {$ENDIF DYNAMIC_LINK}
  2597. {$IFDEF UNICODE}
  2598. {$IFDEF DYNAMIC_LINK}
  2599. var
  2600.   _DrawState: Pointer;
  2601. function DrawState;
  2602. begin
  2603.   GetProcedureAddress(_DrawState, user32, 'DrawStateW');
  2604.   asm
  2605.     mov esp, ebp
  2606.     pop ebp
  2607.     jmp [_DrawState]
  2608.   end;
  2609. end;
  2610. {$ELSE}
  2611. function DrawState; external user32 name 'DrawStateW';
  2612. {$ENDIF DYNAMIC_LINK}
  2613. {$ELSE}
  2614. {$IFDEF DYNAMIC_LINK}
  2615. var
  2616.   _DrawState: Pointer;
  2617. function DrawState;
  2618. begin
  2619.   GetProcedureAddress(_DrawState, user32, 'DrawStateA');
  2620.   asm
  2621.     mov esp, ebp
  2622.     pop ebp
  2623.     jmp [_DrawState]
  2624.   end;
  2625. end;
  2626. {$ELSE}
  2627. function DrawState; external user32 name 'DrawStateA';
  2628. {$ENDIF DYNAMIC_LINK}
  2629. {$ENDIF}
  2630. {$IFDEF DYNAMIC_LINK}
  2631. var
  2632.   _TabbedTextOutA: Pointer;
  2633. function TabbedTextOutA;
  2634. begin
  2635.   GetProcedureAddress(_TabbedTextOutA, user32, 'TabbedTextOutA');
  2636.   asm
  2637.     mov esp, ebp
  2638.     pop ebp
  2639.     jmp [_TabbedTextOutA]
  2640.   end;
  2641. end;
  2642. {$ELSE}
  2643. function TabbedTextOutA; external user32 name 'TabbedTextOutA';
  2644. {$ENDIF DYNAMIC_LINK}
  2645. {$IFDEF DYNAMIC_LINK}
  2646. var
  2647.   _TabbedTextOutW: Pointer;
  2648. function TabbedTextOutW;
  2649. begin
  2650.   GetProcedureAddress(_TabbedTextOutW, user32, 'TabbedTextOutW');
  2651.   asm
  2652.     mov esp, ebp
  2653.     pop ebp
  2654.     jmp [_TabbedTextOutW]
  2655.   end;
  2656. end;
  2657. {$ELSE}
  2658. function TabbedTextOutW; external user32 name 'TabbedTextOutW';
  2659. {$ENDIF DYNAMIC_LINK}
  2660. {$IFDEF UNICODE}
  2661. {$IFDEF DYNAMIC_LINK}
  2662. var
  2663.   _TabbedTextOut: Pointer;
  2664. function TabbedTextOut;
  2665. begin
  2666.   GetProcedureAddress(_TabbedTextOut, user32, 'TabbedTextOutW');
  2667.   asm
  2668.     mov esp, ebp
  2669.     pop ebp
  2670.     jmp [_TabbedTextOut]
  2671.   end;
  2672. end;
  2673. {$ELSE}
  2674. function TabbedTextOut; external user32 name 'TabbedTextOutW';
  2675. {$ENDIF DYNAMIC_LINK}
  2676. {$ELSE}
  2677. {$IFDEF DYNAMIC_LINK}
  2678. var
  2679.   _TabbedTextOut: Pointer;
  2680. function TabbedTextOut;
  2681. begin
  2682.   GetProcedureAddress(_TabbedTextOut, user32, 'TabbedTextOutA');
  2683.   asm
  2684.     mov esp, ebp
  2685.     pop ebp
  2686.     jmp [_TabbedTextOut]
  2687.   end;
  2688. end;
  2689. {$ELSE}
  2690. function TabbedTextOut; external user32 name 'TabbedTextOutA';
  2691. {$ENDIF DYNAMIC_LINK}
  2692. {$ENDIF}
  2693. {$IFDEF DYNAMIC_LINK}
  2694. var
  2695.   _GetTabbedTextExtentA: Pointer;
  2696. function GetTabbedTextExtentA;
  2697. begin
  2698.   GetProcedureAddress(_GetTabbedTextExtentA, user32, 'GetTabbedTextExtentA');
  2699.   asm
  2700.     mov esp, ebp
  2701.     pop ebp
  2702.     jmp [_GetTabbedTextExtentA]
  2703.   end;
  2704. end;
  2705. {$ELSE}
  2706. function GetTabbedTextExtentA; external user32 name 'GetTabbedTextExtentA';
  2707. {$ENDIF DYNAMIC_LINK}
  2708. {$IFDEF DYNAMIC_LINK}
  2709. var
  2710.   _GetTabbedTextExtentW: Pointer;
  2711. function GetTabbedTextExtentW;
  2712. begin
  2713.   GetProcedureAddress(_GetTabbedTextExtentW, user32, 'GetTabbedTextExtentW');
  2714.   asm
  2715.     mov esp, ebp
  2716.     pop ebp
  2717.     jmp [_GetTabbedTextExtentW]
  2718.   end;
  2719. end;
  2720. {$ELSE}
  2721. function GetTabbedTextExtentW; external user32 name 'GetTabbedTextExtentW';
  2722. {$ENDIF DYNAMIC_LINK}
  2723. {$IFDEF UNICODE}
  2724. {$IFDEF DYNAMIC_LINK}
  2725. var
  2726.   _GetTabbedTextExtent: Pointer;
  2727. function GetTabbedTextExtent;
  2728. begin
  2729.   GetProcedureAddress(_GetTabbedTextExtent, user32, 'GetTabbedTextExtentW');
  2730.   asm
  2731.     mov esp, ebp
  2732.     pop ebp
  2733.     jmp [_GetTabbedTextExtent]
  2734.   end;
  2735. end;
  2736. {$ELSE}
  2737. function GetTabbedTextExtent; external user32 name 'GetTabbedTextExtentW';
  2738. {$ENDIF DYNAMIC_LINK}
  2739. {$ELSE}
  2740. {$IFDEF DYNAMIC_LINK}
  2741. var
  2742.   _GetTabbedTextExtent: Pointer;
  2743. function GetTabbedTextExtent;
  2744. begin
  2745.   GetProcedureAddress(_GetTabbedTextExtent, user32, 'GetTabbedTextExtentA');
  2746.   asm
  2747.     mov esp, ebp
  2748.     pop ebp
  2749.     jmp [_GetTabbedTextExtent]
  2750.   end;
  2751. end;
  2752. {$ELSE}
  2753. function GetTabbedTextExtent; external user32 name 'GetTabbedTextExtentA';
  2754. {$ENDIF DYNAMIC_LINK}
  2755. {$ENDIF}
  2756. {$IFDEF DYNAMIC_LINK}
  2757. var
  2758.   _UpdateWindow: Pointer;
  2759. function UpdateWindow;
  2760. begin
  2761.   GetProcedureAddress(_UpdateWindow, user32, 'UpdateWindow');
  2762.   asm
  2763.     mov esp, ebp
  2764.     pop ebp
  2765.     jmp [_UpdateWindow]
  2766.   end;
  2767. end;
  2768. {$ELSE}
  2769. function UpdateWindow; external user32 name 'UpdateWindow';
  2770. {$ENDIF DYNAMIC_LINK}
  2771. {$IFDEF DYNAMIC_LINK}
  2772. var
  2773.   _SetActiveWindow: Pointer;
  2774. function SetActiveWindow;
  2775. begin
  2776.   GetProcedureAddress(_SetActiveWindow, user32, 'SetActiveWindow');
  2777.   asm
  2778.     mov esp, ebp
  2779.     pop ebp
  2780.     jmp [_SetActiveWindow]
  2781.   end;
  2782. end;
  2783. {$ELSE}
  2784. function SetActiveWindow; external user32 name 'SetActiveWindow';
  2785. {$ENDIF DYNAMIC_LINK}
  2786. {$IFDEF DYNAMIC_LINK}
  2787. var
  2788.   _GetForegroundWindow: Pointer;
  2789. function GetForegroundWindow;
  2790. begin
  2791.   GetProcedureAddress(_GetForegroundWindow, user32, 'GetForegroundWindow');
  2792.   asm
  2793.     mov esp, ebp
  2794.     pop ebp
  2795.     jmp [_GetForegroundWindow]
  2796.   end;
  2797. end;
  2798. {$ELSE}
  2799. function GetForegroundWindow; external user32 name 'GetForegroundWindow';
  2800. {$ENDIF DYNAMIC_LINK}
  2801. {$IFDEF DYNAMIC_LINK}
  2802. var
  2803.   _PaintDesktop: Pointer;
  2804. function PaintDesktop;
  2805. begin
  2806.   GetProcedureAddress(_PaintDesktop, user32, 'PaintDesktop');
  2807.   asm
  2808.     mov esp, ebp
  2809.     pop ebp
  2810.     jmp [_PaintDesktop]
  2811.   end;
  2812. end;
  2813. {$ELSE}
  2814. function PaintDesktop; external user32 name 'PaintDesktop';
  2815. {$ENDIF DYNAMIC_LINK}
  2816. {$IFDEF DYNAMIC_LINK}
  2817. var
  2818.   _SwitchToThisWindow: Pointer;
  2819. procedure SwitchToThisWindow;
  2820. begin
  2821.   GetProcedureAddress(_SwitchToThisWindow, user32, 'SwitchToThisWindow');
  2822.   asm
  2823.     mov esp, ebp
  2824.     pop ebp
  2825.     jmp [_SwitchToThisWindow]
  2826.   end;
  2827. end;
  2828. {$ELSE}
  2829. procedure SwitchToThisWindow; external user32 name 'SwitchToThisWindow';
  2830. {$ENDIF DYNAMIC_LINK}
  2831. {$IFDEF DYNAMIC_LINK}
  2832. var
  2833.   _SetForegroundWindow: Pointer;
  2834. function SetForegroundWindow;
  2835. begin
  2836.   GetProcedureAddress(_SetForegroundWindow, user32, 'SetForegroundWindow');
  2837.   asm
  2838.     mov esp, ebp
  2839.     pop ebp
  2840.     jmp [_SetForegroundWindow]
  2841.   end;
  2842. end;
  2843. {$ELSE}
  2844. function SetForegroundWindow; external user32 name 'SetForegroundWindow';
  2845. {$ENDIF DYNAMIC_LINK}
  2846. {$IFDEF DYNAMIC_LINK}
  2847. var
  2848.   _AllowSetForegroundWindow: Pointer;
  2849. function AllowSetForegroundWindow;
  2850. begin
  2851.   GetProcedureAddress(_AllowSetForegroundWindow, user32, 'AllowSetForegroundWindow');
  2852.   asm
  2853.     mov esp, ebp
  2854.     pop ebp
  2855.     jmp [_AllowSetForegroundWindow]
  2856.   end;
  2857. end;
  2858. {$ELSE}
  2859. function AllowSetForegroundWindow; external user32 name 'AllowSetForegroundWindow';
  2860. {$ENDIF DYNAMIC_LINK}
  2861. {$IFDEF DYNAMIC_LINK}
  2862. var
  2863.   _LockSetForegroundWindow: Pointer;
  2864. function LockSetForegroundWindow;
  2865. begin
  2866.   GetProcedureAddress(_LockSetForegroundWindow, user32, 'LockSetForegroundWindow');
  2867.   asm
  2868.     mov esp, ebp
  2869.     pop ebp
  2870.     jmp [_LockSetForegroundWindow]
  2871.   end;
  2872. end;
  2873. {$ELSE}
  2874. function LockSetForegroundWindow; external user32 name 'LockSetForegroundWindow';
  2875. {$ENDIF DYNAMIC_LINK}
  2876. {$IFDEF DYNAMIC_LINK}
  2877. var
  2878.   _WindowFromDC: Pointer;
  2879. function WindowFromDC;
  2880. begin
  2881.   GetProcedureAddress(_WindowFromDC, user32, 'WindowFromDC');
  2882.   asm
  2883.     mov esp, ebp
  2884.     pop ebp
  2885.     jmp [_WindowFromDC]
  2886.   end;
  2887. end;
  2888. {$ELSE}
  2889. function WindowFromDC; external user32 name 'WindowFromDC';
  2890. {$ENDIF DYNAMIC_LINK}
  2891. {$IFDEF DYNAMIC_LINK}
  2892. var
  2893.   _GetDC: Pointer;
  2894. function GetDC;
  2895. begin
  2896.   GetProcedureAddress(_GetDC, user32, 'GetDC');
  2897.   asm
  2898.     mov esp, ebp
  2899.     pop ebp
  2900.     jmp [_GetDC]
  2901.   end;
  2902. end;
  2903. {$ELSE}
  2904. function GetDC; external user32 name 'GetDC';
  2905. {$ENDIF DYNAMIC_LINK}
  2906. {$IFDEF DYNAMIC_LINK}
  2907. var
  2908.   _GetDCEx: Pointer;
  2909. function GetDCEx;
  2910. begin
  2911.   GetProcedureAddress(_GetDCEx, user32, 'GetDCEx');
  2912.   asm
  2913.     mov esp, ebp
  2914.     pop ebp
  2915.     jmp [_GetDCEx]
  2916.   end;
  2917. end;
  2918. {$ELSE}
  2919. function GetDCEx; external user32 name 'GetDCEx';
  2920. {$ENDIF DYNAMIC_LINK}
  2921. {$IFDEF DYNAMIC_LINK}
  2922. var
  2923.   _GetWindowDC: Pointer;
  2924. function GetWindowDC;
  2925. begin
  2926.   GetProcedureAddress(_GetWindowDC, user32, 'GetWindowDC');
  2927.   asm
  2928.     mov esp, ebp
  2929.     pop ebp
  2930.     jmp [_GetWindowDC]
  2931.   end;
  2932. end;
  2933. {$ELSE}
  2934. function GetWindowDC; external user32 name 'GetWindowDC';
  2935. {$ENDIF DYNAMIC_LINK}
  2936. {$IFDEF DYNAMIC_LINK}
  2937. var
  2938.   _ReleaseDC: Pointer;
  2939. function ReleaseDC;
  2940. begin
  2941.   GetProcedureAddress(_ReleaseDC, user32, 'ReleaseDC');
  2942.   asm
  2943.     mov esp, ebp
  2944.     pop ebp
  2945.     jmp [_ReleaseDC]
  2946.   end;
  2947. end;
  2948. {$ELSE}
  2949. function ReleaseDC; external user32 name 'ReleaseDC';
  2950. {$ENDIF DYNAMIC_LINK}
  2951. {$IFDEF DYNAMIC_LINK}
  2952. var
  2953.   _BeginPaint: Pointer;
  2954. function BeginPaint;
  2955. begin
  2956.   GetProcedureAddress(_BeginPaint, user32, 'BeginPaint');
  2957.   asm
  2958.     mov esp, ebp
  2959.     pop ebp
  2960.     jmp [_BeginPaint]
  2961.   end;
  2962. end;
  2963. {$ELSE}
  2964. function BeginPaint; external user32 name 'BeginPaint';
  2965. {$ENDIF DYNAMIC_LINK}
  2966. {$IFDEF DYNAMIC_LINK}
  2967. var
  2968.   _EndPaint: Pointer;
  2969. function EndPaint;
  2970. begin
  2971.   GetProcedureAddress(_EndPaint, user32, 'EndPaint');
  2972.   asm
  2973.     mov esp, ebp
  2974.     pop ebp
  2975.     jmp [_EndPaint]
  2976.   end;
  2977. end;
  2978. {$ELSE}
  2979. function EndPaint; external user32 name 'EndPaint';
  2980. {$ENDIF DYNAMIC_LINK}
  2981. {$IFDEF DYNAMIC_LINK}
  2982. var
  2983.   _GetUpdateRect: Pointer;
  2984. function GetUpdateRect;
  2985. begin
  2986.   GetProcedureAddress(_GetUpdateRect, user32, 'GetUpdateRect');
  2987.   asm
  2988.     mov esp, ebp
  2989.     pop ebp
  2990.     jmp [_GetUpdateRect]
  2991.   end;
  2992. end;
  2993. {$ELSE}
  2994. function GetUpdateRect; external user32 name 'GetUpdateRect';
  2995. {$ENDIF DYNAMIC_LINK}
  2996. {$IFDEF DYNAMIC_LINK}
  2997. var
  2998.   _GetUpdateRgn: Pointer;
  2999. function GetUpdateRgn;
  3000. begin
  3001.   GetProcedureAddress(_GetUpdateRgn, user32, 'GetUpdateRgn');
  3002.   asm
  3003.     mov esp, ebp
  3004.     pop ebp
  3005.     jmp [_GetUpdateRgn]
  3006.   end;
  3007. end;
  3008. {$ELSE}
  3009. function GetUpdateRgn; external user32 name 'GetUpdateRgn';
  3010. {$ENDIF DYNAMIC_LINK}
  3011. {$IFDEF DYNAMIC_LINK}
  3012. var
  3013.   _SetWindowRgn: Pointer;
  3014. function SetWindowRgn;
  3015. begin
  3016.   GetProcedureAddress(_SetWindowRgn, user32, 'SetWindowRgn');
  3017.   asm
  3018.     mov esp, ebp
  3019.     pop ebp
  3020.     jmp [_SetWindowRgn]
  3021.   end;
  3022. end;
  3023. {$ELSE}
  3024. function SetWindowRgn; external user32 name 'SetWindowRgn';
  3025. {$ENDIF DYNAMIC_LINK}
  3026. {$IFDEF DYNAMIC_LINK}
  3027. var
  3028.   _GetWindowRgn: Pointer;
  3029. function GetWindowRgn;
  3030. begin
  3031.   GetProcedureAddress(_GetWindowRgn, user32, 'GetWindowRgn');
  3032.   asm
  3033.     mov esp, ebp
  3034.     pop ebp
  3035.     jmp [_GetWindowRgn]
  3036.   end;
  3037. end;
  3038. {$ELSE}
  3039. function GetWindowRgn; external user32 name 'GetWindowRgn';
  3040. {$ENDIF DYNAMIC_LINK}
  3041. {$IFDEF DYNAMIC_LINK}
  3042. var
  3043.   _GetWindowRgnBox: Pointer;
  3044. function GetWindowRgnBox;
  3045. begin
  3046.   GetProcedureAddress(_GetWindowRgnBox, user32, 'GetWindowRgnBox');
  3047.   asm
  3048.     mov esp, ebp
  3049.     pop ebp
  3050.     jmp [_GetWindowRgnBox]
  3051.   end;
  3052. end;
  3053. {$ELSE}
  3054. function GetWindowRgnBox; external user32 name 'GetWindowRgnBox';
  3055. {$ENDIF DYNAMIC_LINK}
  3056. {$IFDEF DYNAMIC_LINK}
  3057. var
  3058.   _ExcludeUpdateRgn: Pointer;
  3059. function ExcludeUpdateRgn;
  3060. begin
  3061.   GetProcedureAddress(_ExcludeUpdateRgn, user32, 'ExcludeUpdateRgn');
  3062.   asm
  3063.     mov esp, ebp
  3064.     pop ebp
  3065.     jmp [_ExcludeUpdateRgn]
  3066.   end;
  3067. end;
  3068. {$ELSE}
  3069. function ExcludeUpdateRgn; external user32 name 'ExcludeUpdateRgn';
  3070. {$ENDIF DYNAMIC_LINK}
  3071. {$IFDEF DYNAMIC_LINK}
  3072. var
  3073.   _InvalidateRect: Pointer;
  3074. function InvalidateRect;
  3075. begin
  3076.   GetProcedureAddress(_InvalidateRect, user32, 'InvalidateRect');
  3077.   asm
  3078.     mov esp, ebp
  3079.     pop ebp
  3080.     jmp [_InvalidateRect]
  3081.   end;
  3082. end;
  3083. {$ELSE}
  3084. function InvalidateRect; external user32 name 'InvalidateRect';
  3085. {$ENDIF DYNAMIC_LINK}
  3086. {$IFDEF DYNAMIC_LINK}
  3087. var
  3088.   _ValidateRect: Pointer;
  3089. function ValidateRect;
  3090. begin
  3091.   GetProcedureAddress(_ValidateRect, user32, 'ValidateRect');
  3092.   asm
  3093.     mov esp, ebp
  3094.     pop ebp
  3095.     jmp [_ValidateRect]
  3096.   end;
  3097. end;
  3098. {$ELSE}
  3099. function ValidateRect; external user32 name 'ValidateRect';
  3100. {$ENDIF DYNAMIC_LINK}
  3101. {$IFDEF DYNAMIC_LINK}
  3102. var
  3103.   _InvalidateRgn: Pointer;
  3104. function InvalidateRgn;
  3105. begin
  3106.   GetProcedureAddress(_InvalidateRgn, user32, 'InvalidateRgn');
  3107.   asm
  3108.     mov esp, ebp
  3109.     pop ebp
  3110.     jmp [_InvalidateRgn]
  3111.   end;
  3112. end;
  3113. {$ELSE}
  3114. function InvalidateRgn; external user32 name 'InvalidateRgn';
  3115. {$ENDIF DYNAMIC_LINK}
  3116. {$IFDEF DYNAMIC_LINK}
  3117. var
  3118.   _ValidateRgn: Pointer;
  3119. function ValidateRgn;
  3120. begin
  3121.   GetProcedureAddress(_ValidateRgn, user32, 'ValidateRgn');
  3122.   asm
  3123.     mov esp, ebp
  3124.     pop ebp
  3125.     jmp [_ValidateRgn]
  3126.   end;
  3127. end;
  3128. {$ELSE}
  3129. function ValidateRgn; external user32 name 'ValidateRgn';
  3130. {$ENDIF DYNAMIC_LINK}
  3131. {$IFDEF DYNAMIC_LINK}
  3132. var
  3133.   _RedrawWindow: Pointer;
  3134. function RedrawWindow;
  3135. begin
  3136.   GetProcedureAddress(_RedrawWindow, user32, 'RedrawWindow');
  3137.   asm
  3138.     mov esp, ebp
  3139.     pop ebp
  3140.     jmp [_RedrawWindow]
  3141.   end;
  3142. end;
  3143. {$ELSE}
  3144. function RedrawWindow; external user32 name 'RedrawWindow';
  3145. {$ENDIF DYNAMIC_LINK}
  3146. {$IFDEF DYNAMIC_LINK}
  3147. var
  3148.   _LockWindowUpdate: Pointer;
  3149. function LockWindowUpdate;
  3150. begin
  3151.   GetProcedureAddress(_LockWindowUpdate, user32, 'LockWindowUpdate');
  3152.   asm
  3153.     mov esp, ebp
  3154.     pop ebp
  3155.     jmp [_LockWindowUpdate]
  3156.   end;
  3157. end;
  3158. {$ELSE}
  3159. function LockWindowUpdate; external user32 name 'LockWindowUpdate';
  3160. {$ENDIF DYNAMIC_LINK}
  3161. {$IFDEF DYNAMIC_LINK}
  3162. var
  3163.   _ScrollWindow: Pointer;
  3164. function ScrollWindow;
  3165. begin
  3166.   GetProcedureAddress(_ScrollWindow, user32, 'ScrollWindow');
  3167.   asm
  3168.     mov esp, ebp
  3169.     pop ebp
  3170.     jmp [_ScrollWindow]
  3171.   end;
  3172. end;
  3173. {$ELSE}
  3174. function ScrollWindow; external user32 name 'ScrollWindow';
  3175. {$ENDIF DYNAMIC_LINK}
  3176. {$IFDEF DYNAMIC_LINK}
  3177. var
  3178.   _ScrollDC: Pointer;
  3179. function ScrollDC;
  3180. begin
  3181.   GetProcedureAddress(_ScrollDC, user32, 'ScrollDC');
  3182.   asm
  3183.     mov esp, ebp
  3184.     pop ebp
  3185.     jmp [_ScrollDC]
  3186.   end;
  3187. end;
  3188. {$ELSE}
  3189. function ScrollDC; external user32 name 'ScrollDC';
  3190. {$ENDIF DYNAMIC_LINK}
  3191. {$IFDEF DYNAMIC_LINK}
  3192. var
  3193.   _ScrollWindowEx: Pointer;
  3194. function ScrollWindowEx;
  3195. begin
  3196.   GetProcedureAddress(_ScrollWindowEx, user32, 'ScrollWindowEx');
  3197.   asm
  3198.     mov esp, ebp
  3199.     pop ebp
  3200.     jmp [_ScrollWindowEx]
  3201.   end;
  3202. end;
  3203. {$ELSE}
  3204. function ScrollWindowEx; external user32 name 'ScrollWindowEx';
  3205. {$ENDIF DYNAMIC_LINK}
  3206. {$IFDEF DYNAMIC_LINK}
  3207. var
  3208.   _SetScrollPos: Pointer;
  3209. function SetScrollPos;
  3210. begin
  3211.   GetProcedureAddress(_SetScrollPos, user32, 'SetScrollPos');
  3212.   asm
  3213.     mov esp, ebp
  3214.     pop ebp
  3215.     jmp [_SetScrollPos]
  3216.   end;
  3217. end;
  3218. {$ELSE}
  3219. function SetScrollPos; external user32 name 'SetScrollPos';
  3220. {$ENDIF DYNAMIC_LINK}
  3221. {$IFDEF DYNAMIC_LINK}
  3222. var
  3223.   _GetScrollPos: Pointer;
  3224. function GetScrollPos;
  3225. begin
  3226.   GetProcedureAddress(_GetScrollPos, user32, 'GetScrollPos');
  3227.   asm
  3228.     mov esp, ebp
  3229.     pop ebp
  3230.     jmp [_GetScrollPos]
  3231.   end;
  3232. end;
  3233. {$ELSE}
  3234. function GetScrollPos; external user32 name 'GetScrollPos';
  3235. {$ENDIF DYNAMIC_LINK}
  3236. {$IFDEF DYNAMIC_LINK}
  3237. var
  3238.   _SetScrollRange: Pointer;
  3239. function SetScrollRange;
  3240. begin
  3241.   GetProcedureAddress(_SetScrollRange, user32, 'SetScrollRange');
  3242.   asm
  3243.     mov esp, ebp
  3244.     pop ebp
  3245.     jmp [_SetScrollRange]
  3246.   end;
  3247. end;
  3248. {$ELSE}
  3249. function SetScrollRange; external user32 name 'SetScrollRange';
  3250. {$ENDIF DYNAMIC_LINK}
  3251. {$IFDEF DYNAMIC_LINK}
  3252. var
  3253.   _GetScrollRange: Pointer;
  3254. function GetScrollRange;
  3255. begin
  3256.   GetProcedureAddress(_GetScrollRange, user32, 'GetScrollRange');
  3257.   asm
  3258.     mov esp, ebp
  3259.     pop ebp
  3260.     jmp [_GetScrollRange]
  3261.   end;
  3262. end;
  3263. {$ELSE}
  3264. function GetScrollRange; external user32 name 'GetScrollRange';
  3265. {$ENDIF DYNAMIC_LINK}
  3266. {$IFDEF DYNAMIC_LINK}
  3267. var
  3268.   _ShowScrollBar: Pointer;
  3269. function ShowScrollBar;
  3270. begin
  3271.   GetProcedureAddress(_ShowScrollBar, user32, 'ShowScrollBar');
  3272.   asm
  3273.     mov esp, ebp
  3274.     pop ebp
  3275.     jmp [_ShowScrollBar]
  3276.   end;
  3277. end;
  3278. {$ELSE}
  3279. function ShowScrollBar; external user32 name 'ShowScrollBar';
  3280. {$ENDIF DYNAMIC_LINK}
  3281. {$IFDEF DYNAMIC_LINK}
  3282. var
  3283.   _EnableScrollBar: Pointer;
  3284. function EnableScrollBar;
  3285. begin
  3286.   GetProcedureAddress(_EnableScrollBar, user32, 'EnableScrollBar');
  3287.   asm
  3288.     mov esp, ebp
  3289.     pop ebp
  3290.     jmp [_EnableScrollBar]
  3291.   end;
  3292. end;
  3293. {$ELSE}
  3294. function EnableScrollBar; external user32 name 'EnableScrollBar';
  3295. {$ENDIF DYNAMIC_LINK}
  3296. {$IFDEF DYNAMIC_LINK}
  3297. var
  3298.   _SetPropA: Pointer;
  3299. function SetPropA;
  3300. begin
  3301.   GetProcedureAddress(_SetPropA, user32, 'SetPropA');
  3302.   asm
  3303.     mov esp, ebp
  3304.     pop ebp
  3305.     jmp [_SetPropA]
  3306.   end;
  3307. end;
  3308. {$ELSE}
  3309. function SetPropA; external user32 name 'SetPropA';
  3310. {$ENDIF DYNAMIC_LINK}
  3311. {$IFDEF DYNAMIC_LINK}
  3312. var
  3313.   _SetPropW: Pointer;
  3314. function SetPropW;
  3315. begin
  3316.   GetProcedureAddress(_SetPropW, user32, 'SetPropW');
  3317.   asm
  3318.     mov esp, ebp
  3319.     pop ebp
  3320.     jmp [_SetPropW]
  3321.   end;
  3322. end;
  3323. {$ELSE}
  3324. function SetPropW; external user32 name 'SetPropW';
  3325. {$ENDIF DYNAMIC_LINK}
  3326. {$IFDEF UNICODE}
  3327. {$IFDEF DYNAMIC_LINK}
  3328. var
  3329.   _SetProp: Pointer;
  3330. function SetProp;
  3331. begin
  3332.   GetProcedureAddress(_SetProp, user32, 'SetPropW');
  3333.   asm
  3334.     mov esp, ebp
  3335.     pop ebp
  3336.     jmp [_SetProp]
  3337.   end;
  3338. end;
  3339. {$ELSE}
  3340. function SetProp; external user32 name 'SetPropW';
  3341. {$ENDIF DYNAMIC_LINK}
  3342. {$ELSE}
  3343. {$IFDEF DYNAMIC_LINK}
  3344. var
  3345.   _SetProp: Pointer;
  3346. function SetProp;
  3347. begin
  3348.   GetProcedureAddress(_SetProp, user32, 'SetPropA');
  3349.   asm
  3350.     mov esp, ebp
  3351.     pop ebp
  3352.     jmp [_SetProp]
  3353.   end;
  3354. end;
  3355. {$ELSE}
  3356. function SetProp; external user32 name 'SetPropA';
  3357. {$ENDIF DYNAMIC_LINK}
  3358. {$ENDIF}
  3359. {$IFDEF DYNAMIC_LINK}
  3360. var
  3361.   _GetPropA: Pointer;
  3362. function GetPropA;
  3363. begin
  3364.   GetProcedureAddress(_GetPropA, user32, 'GetPropA');
  3365.   asm
  3366.     mov esp, ebp
  3367.     pop ebp
  3368.     jmp [_GetPropA]
  3369.   end;
  3370. end;
  3371. {$ELSE}
  3372. function GetPropA; external user32 name 'GetPropA';
  3373. {$ENDIF DYNAMIC_LINK}
  3374. {$IFDEF DYNAMIC_LINK}
  3375. var
  3376.   _GetPropW: Pointer;
  3377. function GetPropW;
  3378. begin
  3379.   GetProcedureAddress(_GetPropW, user32, 'GetPropW');
  3380.   asm
  3381.     mov esp, ebp
  3382.     pop ebp
  3383.     jmp [_GetPropW]
  3384.   end;
  3385. end;
  3386. {$ELSE}
  3387. function GetPropW; external user32 name 'GetPropW';
  3388. {$ENDIF DYNAMIC_LINK}
  3389. {$IFDEF UNICODE}
  3390. {$IFDEF DYNAMIC_LINK}
  3391. var
  3392.   _GetProp: Pointer;
  3393. function GetProp;
  3394. begin
  3395.   GetProcedureAddress(_GetProp, user32, 'GetPropW');
  3396.   asm
  3397.     mov esp, ebp
  3398.     pop ebp
  3399.     jmp [_GetProp]
  3400.   end;
  3401. end;
  3402. {$ELSE}
  3403. function GetProp; external user32 name 'GetPropW';
  3404. {$ENDIF DYNAMIC_LINK}
  3405. {$ELSE}
  3406. {$IFDEF DYNAMIC_LINK}
  3407. var
  3408.   _GetProp: Pointer;
  3409. function GetProp;
  3410. begin
  3411.   GetProcedureAddress(_GetProp, user32, 'GetPropA');
  3412.   asm
  3413.     mov esp, ebp
  3414.     pop ebp
  3415.     jmp [_GetProp]
  3416.   end;
  3417. end;
  3418. {$ELSE}
  3419. function GetProp; external user32 name 'GetPropA';
  3420. {$ENDIF DYNAMIC_LINK}
  3421. {$ENDIF}
  3422. {$IFDEF DYNAMIC_LINK}
  3423. var
  3424.   _RemovePropA: Pointer;
  3425. function RemovePropA;
  3426. begin
  3427.   GetProcedureAddress(_RemovePropA, user32, 'RemovePropA');
  3428.   asm
  3429.     mov esp, ebp
  3430.     pop ebp
  3431.     jmp [_RemovePropA]
  3432.   end;
  3433. end;
  3434. {$ELSE}
  3435. function RemovePropA; external user32 name 'RemovePropA';
  3436. {$ENDIF DYNAMIC_LINK}
  3437. {$IFDEF DYNAMIC_LINK}
  3438. var
  3439.   _RemovePropW: Pointer;
  3440. function RemovePropW;
  3441. begin
  3442.   GetProcedureAddress(_RemovePropW, user32, 'RemovePropW');
  3443.   asm
  3444.     mov esp, ebp
  3445.     pop ebp
  3446.     jmp [_RemovePropW]
  3447.   end;
  3448. end;
  3449. {$ELSE}
  3450. function RemovePropW; external user32 name 'RemovePropW';
  3451. {$ENDIF DYNAMIC_LINK}
  3452. {$IFDEF UNICODE}
  3453. {$IFDEF DYNAMIC_LINK}
  3454. var
  3455.   _RemoveProp: Pointer;
  3456. function RemoveProp;
  3457. begin
  3458.   GetProcedureAddress(_RemoveProp, user32, 'RemovePropW');
  3459.   asm
  3460.     mov esp, ebp
  3461.     pop ebp
  3462.     jmp [_RemoveProp]
  3463.   end;
  3464. end;
  3465. {$ELSE}
  3466. function RemoveProp; external user32 name 'RemovePropW';
  3467. {$ENDIF DYNAMIC_LINK}
  3468. {$ELSE}
  3469. {$IFDEF DYNAMIC_LINK}
  3470. var
  3471.   _RemoveProp: Pointer;
  3472. function RemoveProp;
  3473. begin
  3474.   GetProcedureAddress(_RemoveProp, user32, 'RemovePropA');
  3475.   asm
  3476.     mov esp, ebp
  3477.     pop ebp
  3478.     jmp [_RemoveProp]
  3479.   end;
  3480. end;
  3481. {$ELSE}
  3482. function RemoveProp; external user32 name 'RemovePropA';
  3483. {$ENDIF DYNAMIC_LINK}
  3484. {$ENDIF}
  3485. {$IFDEF DYNAMIC_LINK}
  3486. var
  3487.   _EnumPropsExA: Pointer;
  3488. function EnumPropsExA;
  3489. begin
  3490.   GetProcedureAddress(_EnumPropsExA, user32, 'EnumPropsExA');
  3491.   asm
  3492.     mov esp, ebp
  3493.     pop ebp
  3494.     jmp [_EnumPropsExA]
  3495.   end;
  3496. end;
  3497. {$ELSE}
  3498. function EnumPropsExA; external user32 name 'EnumPropsExA';
  3499. {$ENDIF DYNAMIC_LINK}
  3500. {$IFDEF DYNAMIC_LINK}
  3501. var
  3502.   _EnumPropsExW: Pointer;
  3503. function EnumPropsExW;
  3504. begin
  3505.   GetProcedureAddress(_EnumPropsExW, user32, 'EnumPropsExW');
  3506.   asm
  3507.     mov esp, ebp
  3508.     pop ebp
  3509.     jmp [_EnumPropsExW]
  3510.   end;
  3511. end;
  3512. {$ELSE}
  3513. function EnumPropsExW; external user32 name 'EnumPropsExW';
  3514. {$ENDIF DYNAMIC_LINK}
  3515. {$IFDEF UNICODE}
  3516. {$IFDEF DYNAMIC_LINK}
  3517. var
  3518.   _EnumPropsEx: Pointer;
  3519. function EnumPropsEx;
  3520. begin
  3521.   GetProcedureAddress(_EnumPropsEx, user32, 'EnumPropsExW');
  3522.   asm
  3523.     mov esp, ebp
  3524.     pop ebp
  3525.     jmp [_EnumPropsEx]
  3526.   end;
  3527. end;
  3528. {$ELSE}
  3529. function EnumPropsEx; external user32 name 'EnumPropsExW';
  3530. {$ENDIF DYNAMIC_LINK}
  3531. {$ELSE}
  3532. {$IFDEF DYNAMIC_LINK}
  3533. var
  3534.   _EnumPropsEx: Pointer;
  3535. function EnumPropsEx;
  3536. begin
  3537.   GetProcedureAddress(_EnumPropsEx, user32, 'EnumPropsExA');
  3538.   asm
  3539.     mov esp, ebp
  3540.     pop ebp
  3541.     jmp [_EnumPropsEx]
  3542.   end;
  3543. end;
  3544. {$ELSE}
  3545. function EnumPropsEx; external user32 name 'EnumPropsExA';
  3546. {$ENDIF DYNAMIC_LINK}
  3547. {$ENDIF}
  3548. {$IFDEF DYNAMIC_LINK}
  3549. var
  3550.   _EnumPropsA: Pointer;
  3551. function EnumPropsA;
  3552. begin
  3553.   GetProcedureAddress(_EnumPropsA, user32, 'EnumPropsA');
  3554.   asm
  3555.     mov esp, ebp
  3556.     pop ebp
  3557.     jmp [_EnumPropsA]
  3558.   end;
  3559. end;
  3560. {$ELSE}
  3561. function EnumPropsA; external user32 name 'EnumPropsA';
  3562. {$ENDIF DYNAMIC_LINK}
  3563. {$IFDEF DYNAMIC_LINK}
  3564. var
  3565.   _EnumPropsW: Pointer;
  3566. function EnumPropsW;
  3567. begin
  3568.   GetProcedureAddress(_EnumPropsW, user32, 'EnumPropsW');
  3569.   asm
  3570.     mov esp, ebp
  3571.     pop ebp
  3572.     jmp [_EnumPropsW]
  3573.   end;
  3574. end;
  3575. {$ELSE}
  3576. function EnumPropsW; external user32 name 'EnumPropsW';
  3577. {$ENDIF DYNAMIC_LINK}
  3578. {$IFDEF UNICODE}
  3579. {$IFDEF DYNAMIC_LINK}
  3580. var
  3581.   _EnumProps: Pointer;
  3582. function EnumProps;
  3583. begin
  3584.   GetProcedureAddress(_EnumProps, user32, 'EnumPropsW');
  3585.   asm
  3586.     mov esp, ebp
  3587.     pop ebp
  3588.     jmp [_EnumProps]
  3589.   end;
  3590. end;
  3591. {$ELSE}
  3592. function EnumProps; external user32 name 'EnumPropsW';
  3593. {$ENDIF DYNAMIC_LINK}
  3594. {$ELSE}
  3595. {$IFDEF DYNAMIC_LINK}
  3596. var
  3597.   _EnumProps: Pointer;
  3598. function EnumProps;
  3599. begin
  3600.   GetProcedureAddress(_EnumProps, user32, 'EnumPropsA');
  3601.   asm
  3602.     mov esp, ebp
  3603.     pop ebp
  3604.     jmp [_EnumProps]
  3605.   end;
  3606. end;
  3607. {$ELSE}
  3608. function EnumProps; external user32 name 'EnumPropsA';
  3609. {$ENDIF DYNAMIC_LINK}
  3610. {$ENDIF}
  3611. {$IFDEF DYNAMIC_LINK}
  3612. var
  3613.   _SetWindowTextA: Pointer;
  3614. function SetWindowTextA;
  3615. begin
  3616.   GetProcedureAddress(_SetWindowTextA, user32, 'SetWindowTextA');
  3617.   asm
  3618.     mov esp, ebp
  3619.     pop ebp
  3620.     jmp [_SetWindowTextA]
  3621.   end;
  3622. end;
  3623. {$ELSE}
  3624. function SetWindowTextA; external user32 name 'SetWindowTextA';
  3625. {$ENDIF DYNAMIC_LINK}
  3626. {$IFDEF DYNAMIC_LINK}
  3627. var
  3628.   _SetWindowTextW: Pointer;
  3629. function SetWindowTextW;
  3630. begin
  3631.   GetProcedureAddress(_SetWindowTextW, user32, 'SetWindowTextW');
  3632.   asm
  3633.     mov esp, ebp
  3634.     pop ebp
  3635.     jmp [_SetWindowTextW]
  3636.   end;
  3637. end;
  3638. {$ELSE}
  3639. function SetWindowTextW; external user32 name 'SetWindowTextW';
  3640. {$ENDIF DYNAMIC_LINK}
  3641. {$IFDEF UNICODE}
  3642. {$IFDEF DYNAMIC_LINK}
  3643. var
  3644.   _SetWindowText: Pointer;
  3645. function SetWindowText;
  3646. begin
  3647.   GetProcedureAddress(_SetWindowText, user32, 'SetWindowTextW');
  3648.   asm
  3649.     mov esp, ebp
  3650.     pop ebp
  3651.     jmp [_SetWindowText]
  3652.   end;
  3653. end;
  3654. {$ELSE}
  3655. function SetWindowText; external user32 name 'SetWindowTextW';
  3656. {$ENDIF DYNAMIC_LINK}
  3657. {$ELSE}
  3658. {$IFDEF DYNAMIC_LINK}
  3659. var
  3660.   _SetWindowText: Pointer;
  3661. function SetWindowText;
  3662. begin
  3663.   GetProcedureAddress(_SetWindowText, user32, 'SetWindowTextA');
  3664.   asm
  3665.     mov esp, ebp
  3666.     pop ebp
  3667.     jmp [_SetWindowText]
  3668.   end;
  3669. end;
  3670. {$ELSE}
  3671. function SetWindowText; external user32 name 'SetWindowTextA';
  3672. {$ENDIF DYNAMIC_LINK}
  3673. {$ENDIF}
  3674. {$IFDEF DYNAMIC_LINK}
  3675. var
  3676.   _GetWindowTextA: Pointer;
  3677. function GetWindowTextA;
  3678. begin
  3679.   GetProcedureAddress(_GetWindowTextA, user32, 'GetWindowTextA');
  3680.   asm
  3681.     mov esp, ebp
  3682.     pop ebp
  3683.     jmp [_GetWindowTextA]
  3684.   end;
  3685. end;
  3686. {$ELSE}
  3687. function GetWindowTextA; external user32 name 'GetWindowTextA';
  3688. {$ENDIF DYNAMIC_LINK}
  3689. {$IFDEF DYNAMIC_LINK}
  3690. var
  3691.   _GetWindowTextW: Pointer;
  3692. function GetWindowTextW;
  3693. begin
  3694.   GetProcedureAddress(_GetWindowTextW, user32, 'GetWindowTextW');
  3695.   asm
  3696.     mov esp, ebp
  3697.     pop ebp
  3698.     jmp [_GetWindowTextW]
  3699.   end;
  3700. end;
  3701. {$ELSE}
  3702. function GetWindowTextW; external user32 name 'GetWindowTextW';
  3703. {$ENDIF DYNAMIC_LINK}
  3704. {$IFDEF UNICODE}
  3705. {$IFDEF DYNAMIC_LINK}
  3706. var
  3707.   _GetWindowText: Pointer;
  3708. function GetWindowText;
  3709. begin
  3710.   GetProcedureAddress(_GetWindowText, user32, 'GetWindowTextW');
  3711.   asm
  3712.     mov esp, ebp
  3713.     pop ebp
  3714.     jmp [_GetWindowText]
  3715.   end;
  3716. end;
  3717. {$ELSE}
  3718. function GetWindowText; external user32 name 'GetWindowTextW';
  3719. {$ENDIF DYNAMIC_LINK}
  3720. {$ELSE}
  3721. {$IFDEF DYNAMIC_LINK}
  3722. var
  3723.   _GetWindowText: Pointer;
  3724. function GetWindowText;
  3725. begin
  3726.   GetProcedureAddress(_GetWindowText, user32, 'GetWindowTextA');
  3727.   asm
  3728.     mov esp, ebp
  3729.     pop ebp
  3730.     jmp [_GetWindowText]
  3731.   end;
  3732. end;
  3733. {$ELSE}
  3734. function GetWindowText; external user32 name 'GetWindowTextA';
  3735. {$ENDIF DYNAMIC_LINK}
  3736. {$ENDIF}
  3737. {$IFDEF DYNAMIC_LINK}
  3738. var
  3739.   _GetWindowTextLengthA: Pointer;
  3740. function GetWindowTextLengthA;
  3741. begin
  3742.   GetProcedureAddress(_GetWindowTextLengthA, user32, 'GetWindowTextLengthA');
  3743.   asm
  3744.     mov esp, ebp
  3745.     pop ebp
  3746.     jmp [_GetWindowTextLengthA]
  3747.   end;
  3748. end;
  3749. {$ELSE}
  3750. function GetWindowTextLengthA; external user32 name 'GetWindowTextLengthA';
  3751. {$ENDIF DYNAMIC_LINK}
  3752. {$IFDEF DYNAMIC_LINK}
  3753. var
  3754.   _GetWindowTextLengthW: Pointer;
  3755. function GetWindowTextLengthW;
  3756. begin
  3757.   GetProcedureAddress(_GetWindowTextLengthW, user32, 'GetWindowTextLengthW');
  3758.   asm
  3759.     mov esp, ebp
  3760.     pop ebp
  3761.     jmp [_GetWindowTextLengthW]
  3762.   end;
  3763. end;
  3764. {$ELSE}
  3765. function GetWindowTextLengthW; external user32 name 'GetWindowTextLengthW';
  3766. {$ENDIF DYNAMIC_LINK}
  3767. {$IFDEF UNICODE}
  3768. {$IFDEF DYNAMIC_LINK}
  3769. var
  3770.   _GetWindowTextLength: Pointer;
  3771. function GetWindowTextLength;
  3772. begin
  3773.   GetProcedureAddress(_GetWindowTextLength, user32, 'GetWindowTextLengthW');
  3774.   asm
  3775.     mov esp, ebp
  3776.     pop ebp
  3777.     jmp [_GetWindowTextLength]
  3778.   end;
  3779. end;
  3780. {$ELSE}
  3781. function GetWindowTextLength; external user32 name 'GetWindowTextLengthW';
  3782. {$ENDIF DYNAMIC_LINK}
  3783. {$ELSE}
  3784. {$IFDEF DYNAMIC_LINK}
  3785. var
  3786.   _GetWindowTextLength: Pointer;
  3787. function GetWindowTextLength;
  3788. begin
  3789.   GetProcedureAddress(_GetWindowTextLength, user32, 'GetWindowTextLengthA');
  3790.   asm
  3791.     mov esp, ebp
  3792.     pop ebp
  3793.     jmp [_GetWindowTextLength]
  3794.   end;
  3795. end;
  3796. {$ELSE}
  3797. function GetWindowTextLength; external user32 name 'GetWindowTextLengthA';
  3798. {$ENDIF DYNAMIC_LINK}
  3799. {$ENDIF}
  3800. {$IFDEF DYNAMIC_LINK}
  3801. var
  3802.   _GetClientRect: Pointer;
  3803. function GetClientRect;
  3804. begin
  3805.   GetProcedureAddress(_GetClientRect, user32, 'GetClientRect');
  3806.   asm
  3807.     mov esp, ebp
  3808.     pop ebp
  3809.     jmp [_GetClientRect]
  3810.   end;
  3811. end;
  3812. {$ELSE}
  3813. function GetClientRect; external user32 name 'GetClientRect';
  3814. {$ENDIF DYNAMIC_LINK}
  3815. {$IFDEF DYNAMIC_LINK}
  3816. var
  3817.   _GetWindowRect: Pointer;
  3818. function GetWindowRect;
  3819. begin
  3820.   GetProcedureAddress(_GetWindowRect, user32, 'GetWindowRect');
  3821.   asm
  3822.     mov esp, ebp
  3823.     pop ebp
  3824.     jmp [_GetWindowRect]
  3825.   end;
  3826. end;
  3827. {$ELSE}
  3828. function GetWindowRect; external user32 name 'GetWindowRect';
  3829. {$ENDIF DYNAMIC_LINK}
  3830. {$IFDEF DYNAMIC_LINK}
  3831. var
  3832.   _AdjustWindowRect: Pointer;
  3833. function AdjustWindowRect;
  3834. begin
  3835.   GetProcedureAddress(_AdjustWindowRect, user32, 'AdjustWindowRect');
  3836.   asm
  3837.     mov esp, ebp
  3838.     pop ebp
  3839.     jmp [_AdjustWindowRect]
  3840.   end;
  3841. end;
  3842. {$ELSE}
  3843. function AdjustWindowRect; external user32 name 'AdjustWindowRect';
  3844. {$ENDIF DYNAMIC_LINK}
  3845. {$IFDEF DYNAMIC_LINK}
  3846. var
  3847.   _AdjustWindowRectEx: Pointer;
  3848. function AdjustWindowRectEx;
  3849. begin
  3850.   GetProcedureAddress(_AdjustWindowRectEx, user32, 'AdjustWindowRectEx');
  3851.   asm
  3852.     mov esp, ebp
  3853.     pop ebp
  3854.     jmp [_AdjustWindowRectEx]
  3855.   end;
  3856. end;
  3857. {$ELSE}
  3858. function AdjustWindowRectEx; external user32 name 'AdjustWindowRectEx';
  3859. {$ENDIF DYNAMIC_LINK}
  3860. {$IFDEF DYNAMIC_LINK}
  3861. var
  3862.   _SetWindowContextHelpId: Pointer;
  3863. function SetWindowContextHelpId;
  3864. begin
  3865.   GetProcedureAddress(_SetWindowContextHelpId, user32, 'SetWindowContextHelpId');
  3866.   asm
  3867.     mov esp, ebp
  3868.     pop ebp
  3869.     jmp [_SetWindowContextHelpId]
  3870.   end;
  3871. end;
  3872. {$ELSE}
  3873. function SetWindowContextHelpId; external user32 name 'SetWindowContextHelpId';
  3874. {$ENDIF DYNAMIC_LINK}
  3875. {$IFDEF DYNAMIC_LINK}
  3876. var
  3877.   _GetWindowContextHelpId: Pointer;
  3878. function GetWindowContextHelpId;
  3879. begin
  3880.   GetProcedureAddress(_GetWindowContextHelpId, user32, 'GetWindowContextHelpId');
  3881.   asm
  3882.     mov esp, ebp
  3883.     pop ebp
  3884.     jmp [_GetWindowContextHelpId]
  3885.   end;
  3886. end;
  3887. {$ELSE}
  3888. function GetWindowContextHelpId; external user32 name 'GetWindowContextHelpId';
  3889. {$ENDIF DYNAMIC_LINK}
  3890. {$IFDEF DYNAMIC_LINK}
  3891. var
  3892.   _SetMenuContextHelpId: Pointer;
  3893. function SetMenuContextHelpId;
  3894. begin
  3895.   GetProcedureAddress(_SetMenuContextHelpId, user32, 'SetMenuContextHelpId');
  3896.   asm
  3897.     mov esp, ebp
  3898.     pop ebp
  3899.     jmp [_SetMenuContextHelpId]
  3900.   end;
  3901. end;
  3902. {$ELSE}
  3903. function SetMenuContextHelpId; external user32 name 'SetMenuContextHelpId';
  3904. {$ENDIF DYNAMIC_LINK}
  3905. {$IFDEF DYNAMIC_LINK}
  3906. var
  3907.   _GetMenuContextHelpId: Pointer;
  3908. function GetMenuContextHelpId;
  3909. begin
  3910.   GetProcedureAddress(_GetMenuContextHelpId, user32, 'GetMenuContextHelpId');
  3911.   asm
  3912.     mov esp, ebp
  3913.     pop ebp
  3914.     jmp [_GetMenuContextHelpId]
  3915.   end;
  3916. end;
  3917. {$ELSE}
  3918. function GetMenuContextHelpId; external user32 name 'GetMenuContextHelpId';
  3919. {$ENDIF DYNAMIC_LINK}
  3920. {$IFDEF DYNAMIC_LINK}
  3921. var
  3922.   _MessageBoxA: Pointer;
  3923. function MessageBoxA;
  3924. begin
  3925.   GetProcedureAddress(_MessageBoxA, user32, 'MessageBoxA');
  3926.   asm
  3927.     mov esp, ebp
  3928.     pop ebp
  3929.     jmp [_MessageBoxA]
  3930.   end;
  3931. end;
  3932. {$ELSE}
  3933. function MessageBoxA; external user32 name 'MessageBoxA';
  3934. {$ENDIF DYNAMIC_LINK}
  3935. {$IFDEF DYNAMIC_LINK}
  3936. var
  3937.   _MessageBoxW: Pointer;
  3938. function MessageBoxW;
  3939. begin
  3940.   GetProcedureAddress(_MessageBoxW, user32, 'MessageBoxW');
  3941.   asm
  3942.     mov esp, ebp
  3943.     pop ebp
  3944.     jmp [_MessageBoxW]
  3945.   end;
  3946. end;
  3947. {$ELSE}
  3948. function MessageBoxW; external user32 name 'MessageBoxW';
  3949. {$ENDIF DYNAMIC_LINK}
  3950. {$IFDEF UNICODE}
  3951. {$IFDEF DYNAMIC_LINK}
  3952. var
  3953.   _MessageBox: Pointer;
  3954. function MessageBox;
  3955. begin
  3956.   GetProcedureAddress(_MessageBox, user32, 'MessageBoxW');
  3957.   asm
  3958.     mov esp, ebp
  3959.     pop ebp
  3960.     jmp [_MessageBox]
  3961.   end;
  3962. end;
  3963. {$ELSE}
  3964. function MessageBox; external user32 name 'MessageBoxW';
  3965. {$ENDIF DYNAMIC_LINK}
  3966. {$ELSE}
  3967. {$IFDEF DYNAMIC_LINK}
  3968. var
  3969.   _MessageBox: Pointer;
  3970. function MessageBox;
  3971. begin
  3972.   GetProcedureAddress(_MessageBox, user32, 'MessageBoxA');
  3973.   asm
  3974.     mov esp, ebp
  3975.     pop ebp
  3976.     jmp [_MessageBox]
  3977.   end;
  3978. end;
  3979. {$ELSE}
  3980. function MessageBox; external user32 name 'MessageBoxA';
  3981. {$ENDIF DYNAMIC_LINK}
  3982. {$ENDIF}
  3983. {$IFDEF DYNAMIC_LINK}
  3984. var
  3985.   _MessageBoxExA: Pointer;
  3986. function MessageBoxExA;
  3987. begin
  3988.   GetProcedureAddress(_MessageBoxExA, user32, 'MessageBoxExA');
  3989.   asm
  3990.     mov esp, ebp
  3991.     pop ebp
  3992.     jmp [_MessageBoxExA]
  3993.   end;
  3994. end;
  3995. {$ELSE}
  3996. function MessageBoxExA; external user32 name 'MessageBoxExA';
  3997. {$ENDIF DYNAMIC_LINK}
  3998. {$IFDEF DYNAMIC_LINK}
  3999. var
  4000.   _MessageBoxExW: Pointer;
  4001. function MessageBoxExW;
  4002. begin
  4003.   GetProcedureAddress(_MessageBoxExW, user32, 'MessageBoxExW');
  4004.   asm
  4005.     mov esp, ebp
  4006.     pop ebp
  4007.     jmp [_MessageBoxExW]
  4008.   end;
  4009. end;
  4010. {$ELSE}
  4011. function MessageBoxExW; external user32 name 'MessageBoxExW';
  4012. {$ENDIF DYNAMIC_LINK}
  4013. {$IFDEF UNICODE}
  4014. {$IFDEF DYNAMIC_LINK}
  4015. var
  4016.   _MessageBoxEx: Pointer;
  4017. function MessageBoxEx;
  4018. begin
  4019.   GetProcedureAddress(_MessageBoxEx, user32, 'MessageBoxExW');
  4020.   asm
  4021.     mov esp, ebp
  4022.     pop ebp
  4023.     jmp [_MessageBoxEx]
  4024.   end;
  4025. end;
  4026. {$ELSE}
  4027. function MessageBoxEx; external user32 name 'MessageBoxExW';
  4028. {$ENDIF DYNAMIC_LINK}
  4029. {$ELSE}
  4030. {$IFDEF DYNAMIC_LINK}
  4031. var
  4032.   _MessageBoxEx: Pointer;
  4033. function MessageBoxEx;
  4034. begin
  4035.   GetProcedureAddress(_MessageBoxEx, user32, 'MessageBoxExA');
  4036.   asm
  4037.     mov esp, ebp
  4038.     pop ebp
  4039.     jmp [_MessageBoxEx]
  4040.   end;
  4041. end;
  4042. {$ELSE}
  4043. function MessageBoxEx; external user32 name 'MessageBoxExA';
  4044. {$ENDIF DYNAMIC_LINK}
  4045. {$ENDIF}
  4046. {$IFDEF DYNAMIC_LINK}
  4047. var
  4048.   _MessageBoxIndirectA: Pointer;
  4049. function MessageBoxIndirectA;
  4050. begin
  4051.   GetProcedureAddress(_MessageBoxIndirectA, user32, 'MessageBoxIndirectA');
  4052.   asm
  4053.     mov esp, ebp
  4054.     pop ebp
  4055.     jmp [_MessageBoxIndirectA]
  4056.   end;
  4057. end;