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

Windows编程

开发平台:

Delphi

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