jwawinver.pas 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. {******************************************************************************}
  2. { }
  3. { Windows Version API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: winver.h, released June 2000. The original Pascal }
  9. { code is: WinVer.pas, released December 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. // $Id: JwaWinVer.pas,v 1.9 2005/09/06 16:36:51 marquardt Exp $
  43. {$IFNDEF JWA_INCLUDEMODE}
  44. unit JwaWinVer;
  45. {$WEAKPACKAGEUNIT}
  46. {$I jediapilib.inc}
  47. interface
  48. uses
  49. JwaWinUser, JwaWinType;
  50. {$ENDIF !JWA_INCLUDEMODE}
  51. {$IFDEF JWA_INTERFACESECTION}
  52. {$HPPEMIT ''}
  53. {$HPPEMIT '#include "WinVer.h"'}
  54. {$HPPEMIT ''}
  55. const
  56. // RT_VERSION = MAKEINTRESOURCE(16);
  57. // ----- Symbols -----
  58. VS_FILE_INFO = RT_VERSION;
  59. {$EXTERNALSYM VS_FILE_INFO}
  60. VS_VERSION_INFO = 1;
  61. {$EXTERNALSYM VS_VERSION_INFO}
  62. VS_USER_DEFINED = 100;
  63. {$EXTERNALSYM VS_USER_DEFINED}
  64. // ----- VS_VERSION.dwFileFlags -----
  65. VS_FFI_SIGNATURE = $FEEF04BD;
  66. {$EXTERNALSYM VS_FFI_SIGNATURE}
  67. VS_FFI_STRUCVERSION = $00010000;
  68. {$EXTERNALSYM VS_FFI_STRUCVERSION}
  69. VS_FFI_FILEFLAGSMASK = $0000003F;
  70. {$EXTERNALSYM VS_FFI_FILEFLAGSMASK}
  71. // ----- VS_VERSION.dwFileFlags -----
  72. VS_FF_DEBUG = $00000001;
  73. {$EXTERNALSYM VS_FF_DEBUG}
  74. VS_FF_PRERELEASE = $00000002;
  75. {$EXTERNALSYM VS_FF_PRERELEASE}
  76. VS_FF_PATCHED = $00000004;
  77. {$EXTERNALSYM VS_FF_PATCHED}
  78. VS_FF_PRIVATEBUILD = $00000008;
  79. {$EXTERNALSYM VS_FF_PRIVATEBUILD}
  80. VS_FF_INFOINFERRED = $00000010;
  81. {$EXTERNALSYM VS_FF_INFOINFERRED}
  82. VS_FF_SPECIALBUILD = $00000020;
  83. {$EXTERNALSYM VS_FF_SPECIALBUILD}
  84. // ----- VS_VERSION.dwFileOS -----
  85. VOS_UNKNOWN = $00000000;
  86. {$EXTERNALSYM VOS_UNKNOWN}
  87. VOS_DOS = $00010000;
  88. {$EXTERNALSYM VOS_DOS}
  89. VOS_OS216 = $00020000;
  90. {$EXTERNALSYM VOS_OS216}
  91. VOS_OS232 = $00030000;
  92. {$EXTERNALSYM VOS_OS232}
  93. VOS_NT = $00040000;
  94. {$EXTERNALSYM VOS_NT}
  95. VOS_WINCE = $00050000;
  96. {$EXTERNALSYM VOS_WINCE}
  97. VOS__BASE = $00000000;
  98. {$EXTERNALSYM VOS__BASE}
  99. VOS__WINDOWS16 = $00000001;
  100. {$EXTERNALSYM VOS__WINDOWS16}
  101. VOS__PM16 = $00000002;
  102. {$EXTERNALSYM VOS__PM16}
  103. VOS__PM32 = $00000003;
  104. {$EXTERNALSYM VOS__PM32}
  105. VOS__WINDOWS32 = $00000004;
  106. {$EXTERNALSYM VOS__WINDOWS32}
  107. VOS_DOS_WINDOWS16 = $00010001;
  108. {$EXTERNALSYM VOS_DOS_WINDOWS16}
  109. VOS_DOS_WINDOWS32 = $00010004;
  110. {$EXTERNALSYM VOS_DOS_WINDOWS32}
  111. VOS_OS216_PM16 = $00020002;
  112. {$EXTERNALSYM VOS_OS216_PM16}
  113. VOS_OS232_PM32 = $00030003;
  114. {$EXTERNALSYM VOS_OS232_PM32}
  115. VOS_NT_WINDOWS32 = $00040004;
  116. {$EXTERNALSYM VOS_NT_WINDOWS32}
  117. // ----- VS_VERSION.dwFileType -----
  118. VFT_UNKNOWN = $00000000;
  119. {$EXTERNALSYM VFT_UNKNOWN}
  120. VFT_APP = $00000001;
  121. {$EXTERNALSYM VFT_APP}
  122. VFT_DLL = $00000002;
  123. {$EXTERNALSYM VFT_DLL}
  124. VFT_DRV = $00000003;
  125. {$EXTERNALSYM VFT_DRV}
  126. VFT_FONT = $00000004;
  127. {$EXTERNALSYM VFT_FONT}
  128. VFT_VXD = $00000005;
  129. {$EXTERNALSYM VFT_VXD}
  130. VFT_STATIC_LIB = $00000007;
  131. {$EXTERNALSYM VFT_STATIC_LIB}
  132. // ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV -----
  133. VFT2_UNKNOWN = $00000000;
  134. {$EXTERNALSYM VFT2_UNKNOWN}
  135. VFT2_DRV_PRINTER = $00000001;
  136. {$EXTERNALSYM VFT2_DRV_PRINTER}
  137. VFT2_DRV_KEYBOARD = $00000002;
  138. {$EXTERNALSYM VFT2_DRV_KEYBOARD}
  139. VFT2_DRV_LANGUAGE = $00000003;
  140. {$EXTERNALSYM VFT2_DRV_LANGUAGE}
  141. VFT2_DRV_DISPLAY = $00000004;
  142. {$EXTERNALSYM VFT2_DRV_DISPLAY}
  143. VFT2_DRV_MOUSE = $00000005;
  144. {$EXTERNALSYM VFT2_DRV_MOUSE}
  145. VFT2_DRV_NETWORK = $00000006;
  146. {$EXTERNALSYM VFT2_DRV_NETWORK}
  147. VFT2_DRV_SYSTEM = $00000007;
  148. {$EXTERNALSYM VFT2_DRV_SYSTEM}
  149. VFT2_DRV_INSTALLABLE = $00000008;
  150. {$EXTERNALSYM VFT2_DRV_INSTALLABLE}
  151. VFT2_DRV_SOUND = $00000009;
  152. {$EXTERNALSYM VFT2_DRV_SOUND}
  153. VFT2_DRV_COMM = $0000000A;
  154. {$EXTERNALSYM VFT2_DRV_COMM}
  155. VFT2_DRV_INPUTMETHOD = $0000000B;
  156. {$EXTERNALSYM VFT2_DRV_INPUTMETHOD}
  157. VFT2_DRV_VERSIONED_PRINTER = $0000000C;
  158. {$EXTERNALSYM VFT2_DRV_VERSIONED_PRINTER}
  159. // ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT -----
  160. VFT2_FONT_RASTER = $00000001;
  161. {$EXTERNALSYM VFT2_FONT_RASTER}
  162. VFT2_FONT_VECTOR = $00000002;
  163. {$EXTERNALSYM VFT2_FONT_VECTOR}
  164. VFT2_FONT_TRUETYPE = $00000003;
  165. {$EXTERNALSYM VFT2_FONT_TRUETYPE}
  166. // ----- VerFindFile() flags -----
  167. VFFF_ISSHAREDFILE = $0001;
  168. {$EXTERNALSYM VFFF_ISSHAREDFILE}
  169. VFF_CURNEDEST = $0001;
  170. {$EXTERNALSYM VFF_CURNEDEST}
  171. VFF_FILEINUSE = $0002;
  172. {$EXTERNALSYM VFF_FILEINUSE}
  173. VFF_BUFFTOOSMALL = $0004;
  174. {$EXTERNALSYM VFF_BUFFTOOSMALL}
  175. // ----- VerInstallFile() flags -----
  176. VIFF_FORCEINSTALL = $0001;
  177. {$EXTERNALSYM VIFF_FORCEINSTALL}
  178. VIFF_DONTDELETEOLD = $0002;
  179. {$EXTERNALSYM VIFF_DONTDELETEOLD}
  180. VIF_TEMPFILE = $00000001;
  181. {$EXTERNALSYM VIF_TEMPFILE}
  182. VIF_MISMATCH = $00000002;
  183. {$EXTERNALSYM VIF_MISMATCH}
  184. VIF_SRCOLD = $00000004;
  185. {$EXTERNALSYM VIF_SRCOLD}
  186. VIF_DIFFLANG = $00000008;
  187. {$EXTERNALSYM VIF_DIFFLANG}
  188. VIF_DIFFCODEPG = $00000010;
  189. {$EXTERNALSYM VIF_DIFFCODEPG}
  190. VIF_DIFFTYPE = $00000020;
  191. {$EXTERNALSYM VIF_DIFFTYPE}
  192. VIF_WRITEPROT = $00000040;
  193. {$EXTERNALSYM VIF_WRITEPROT}
  194. VIF_FILEINUSE = $00000080;
  195. {$EXTERNALSYM VIF_FILEINUSE}
  196. VIF_OUTOFSPACE = $00000100;
  197. {$EXTERNALSYM VIF_OUTOFSPACE}
  198. VIF_ACCESSVIOLATION = $00000200;
  199. {$EXTERNALSYM VIF_ACCESSVIOLATION}
  200. VIF_SHARINGVIOLATION = $00000400;
  201. {$EXTERNALSYM VIF_SHARINGVIOLATION}
  202. VIF_CANNOTCREATE = $00000800;
  203. {$EXTERNALSYM VIF_CANNOTCREATE}
  204. VIF_CANNOTDELETE = $00001000;
  205. {$EXTERNALSYM VIF_CANNOTDELETE}
  206. VIF_CANNOTRENAME = $00002000;
  207. {$EXTERNALSYM VIF_CANNOTRENAME}
  208. VIF_CANNOTDELETECUR = $00004000;
  209. {$EXTERNALSYM VIF_CANNOTDELETECUR}
  210. VIF_OUTOFMEMORY = $00008000;
  211. {$EXTERNALSYM VIF_OUTOFMEMORY}
  212. VIF_CANNOTREADSRC = $00010000;
  213. {$EXTERNALSYM VIF_CANNOTREADSRC}
  214. VIF_CANNOTREADDST = $00020000;
  215. {$EXTERNALSYM VIF_CANNOTREADDST}
  216. VIF_BUFFTOOSMALL = $00040000;
  217. {$EXTERNALSYM VIF_BUFFTOOSMALL}
  218. VIF_CANNOTLOADLZ32 = $00080000;
  219. {$EXTERNALSYM VIF_CANNOTLOADLZ32}
  220. VIF_CANNOTLOADCABINET = $00100000;
  221. {$EXTERNALSYM VIF_CANNOTLOADCABINET}
  222. // ----- Types and structures -----
  223. type
  224. PVSFixedFileInfo = ^VS_FIXEDFILEINFO;
  225. tagVS_FIXEDFILEINFO = record
  226. dwSignature: DWORD; // e.g. 0xfeef04bd
  227. dwStrucVersion: DWORD; // e.g. 0x00000042 = "0.42"
  228. dwFileVersionMS: DWORD; // e.g. 0x00030075 = "3.75"
  229. dwFileVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
  230. dwProductVersionMS: DWORD; // e.g. 0x00030010 = "3.10"
  231. dwProductVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
  232. dwFileFlagsMask: DWORD; // = 0x3F for version "0.42"
  233. dwFileFlags: DWORD; // e.g. VFF_DEBUG | VFF_PRERELEASE
  234. dwFileOS: DWORD; // e.g. VOS_DOS_WINDOWS16
  235. dwFileType: DWORD; // e.g. VFT_DRIVER
  236. dwFileSubtype: DWORD; // e.g. VFT2_DRV_KEYBOARD
  237. dwFileDateMS: DWORD; // e.g. 0
  238. dwFileDateLS: DWORD; // e.g. 0
  239. end;
  240. {$EXTERNALSYM tagVS_FIXEDFILEINFO}
  241. VS_FIXEDFILEINFO = tagVS_FIXEDFILEINFO;
  242. {$EXTERNALSYM VS_FIXEDFILEINFO}
  243. TVSFixedFileInfo = VS_FIXEDFILEINFO;
  244. // ----- Function prototypes -----
  245. function VerFindFileA(uFlags: DWORD; szFileName, szWinDir, szAppDir,
  246. szCurDir: LPSTR; var lpuCurDirLen: UINT; szDestDir: LPSTR;
  247. var lpuDestDirLen: UINT): DWORD; stdcall;
  248. {$EXTERNALSYM VerFindFileA}
  249. function VerFindFileW(uFlags: DWORD; szFileName, szWinDir, szAppDir,
  250. szCurDir: LPWSTR; var lpuCurDirLen: UINT; szDestDir: LPWSTR;
  251. var lpuDestDirLen: UINT): DWORD; stdcall;
  252. {$EXTERNALSYM VerFindFileW}
  253. function VerFindFile(uFlags: DWORD; szFileName, szWinDir, szAppDir,
  254. szCurDir: LPTSTR; var lpuCurDirLen: UINT; szDestDir: LPTSTR;
  255. var lpuDestDirLen: UINT): DWORD; stdcall;
  256. {$EXTERNALSYM VerFindFile}
  257. function VerInstallFileA(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
  258. szDestDir, szCurDir, szTmpFile: LPSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
  259. {$EXTERNALSYM VerInstallFileA}
  260. function VerInstallFileW(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
  261. szDestDir, szCurDir, szTmpFile: LPWSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
  262. {$EXTERNALSYM VerInstallFileW}
  263. function VerInstallFile(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
  264. szDestDir, szCurDir, szTmpFile: LPTSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
  265. {$EXTERNALSYM VerInstallFile}
  266. // Returns size of version info in bytes
  267. function GetFileVersionInfoSizeA(lptstrFilename: LPCSTR; var lpdwHandle: DWORD): DWORD; stdcall;
  268. {$EXTERNALSYM GetFileVersionInfoSizeA}
  269. function GetFileVersionInfoSizeW(lptstrFilename: LPCWSTR; var lpdwHandle: DWORD): DWORD; stdcall;
  270. {$EXTERNALSYM GetFileVersionInfoSizeW}
  271. function GetFileVersionInfoSize(lptstrFilename: LPCTSTR; var lpdwHandle: DWORD): DWORD; stdcall;
  272. {$EXTERNALSYM GetFileVersionInfoSize}
  273. // Read version info into buffer
  274. function GetFileVersionInfoA(lptstrFilename: LPCSTR; dwHandle, dwLen: DWORD;
  275. lpData: LPVOID): BOOL; stdcall;
  276. {$EXTERNALSYM GetFileVersionInfoA}
  277. function GetFileVersionInfoW(lptstrFilename: LPCWSTR; dwHandle, dwLen: DWORD;
  278. lpData: LPVOID): BOOL; stdcall;
  279. {$EXTERNALSYM GetFileVersionInfoW}
  280. function GetFileVersionInfo(lptstrFilename: LPCTSTR; dwHandle, dwLen: DWORD;
  281. lpData: LPVOID): BOOL; stdcall;
  282. {$EXTERNALSYM GetFileVersionInfo}
  283. function VerLanguageNameA(wLang: DWORD; szLang: LPSTR; nSize: DWORD): DWORD; stdcall;
  284. {$EXTERNALSYM VerLanguageNameA}
  285. function VerLanguageNameW(wLang: DWORD; szLang: LPWSTR; nSize: DWORD): DWORD; stdcall;
  286. {$EXTERNALSYM VerLanguageNameW}
  287. function VerLanguageName(wLang: DWORD; szLang: LPTSTR; nSize: DWORD): DWORD; stdcall;
  288. {$EXTERNALSYM VerLanguageName}
  289. function VerQueryValueA(pBlock: LPVOID; lpSubBlock: LPSTR; var lplpBuffer: LPVOID;
  290. var puLen: UINT): BOOL; stdcall;
  291. {$EXTERNALSYM VerQueryValueA}
  292. function VerQueryValueW(pBlock: LPVOID; lpSubBlock: LPWSTR; var lplpBuffer: LPVOID;
  293. var puLen: UINT): BOOL; stdcall;
  294. {$EXTERNALSYM VerQueryValueW}
  295. function VerQueryValue(pBlock: LPVOID; lpSubBlock: LPTSTR; var lplpBuffer: LPVOID;
  296. var puLen: UINT): BOOL; stdcall;
  297. {$EXTERNALSYM VerQueryValue}
  298. {$ENDIF JWA_INTERFACESECTION}
  299. {$IFNDEF JWA_INCLUDEMODE}
  300. implementation
  301. uses
  302. JwaWinDLLNames;
  303. {$ENDIF !JWA_INCLUDEMODE}
  304. {$IFDEF JWA_IMPLEMENTATIONSECTION}
  305. {$IFDEF DYNAMIC_LINK}
  306. var
  307. _VerFindFileA: Pointer;
  308. function VerFindFileA;
  309. begin
  310. GetProcedureAddress(_VerFindFileA, versionlib, 'VerFindFileA');
  311. asm
  312. MOV ESP, EBP
  313. POP EBP
  314. JMP [_VerFindFileA]
  315. end;
  316. end;
  317. var
  318. _VerFindFileW: Pointer;
  319. function VerFindFileW;
  320. begin
  321. GetProcedureAddress(_VerFindFileW, versionlib, 'VerFindFileW');
  322. asm
  323. MOV ESP, EBP
  324. POP EBP
  325. JMP [_VerFindFileW]
  326. end;
  327. end;
  328. var
  329. _VerFindFile: Pointer;
  330. function VerFindFile;
  331. begin
  332. GetProcedureAddress(_VerFindFile, versionlib, 'VerFindFile' + AWSuffix);
  333. asm
  334. MOV ESP, EBP
  335. POP EBP
  336. JMP [_VerFindFile]
  337. end;
  338. end;
  339. var
  340. _VerInstallFileA: Pointer;
  341. function VerInstallFileA;
  342. begin
  343. GetProcedureAddress(_VerInstallFileA, versionlib, 'VerInstallFileA');
  344. asm
  345. MOV ESP, EBP
  346. POP EBP
  347. JMP [_VerInstallFileA]
  348. end;
  349. end;
  350. var
  351. _VerInstallFileW: Pointer;
  352. function VerInstallFileW;
  353. begin
  354. GetProcedureAddress(_VerInstallFileW, versionlib, 'VerInstallFileW');
  355. asm
  356. MOV ESP, EBP
  357. POP EBP
  358. JMP [_VerInstallFileW]
  359. end;
  360. end;
  361. var
  362. _VerInstallFile: Pointer;
  363. function VerInstallFile;
  364. begin
  365. GetProcedureAddress(_VerInstallFile, versionlib, 'VerInstallFile' + AWSuffix);
  366. asm
  367. MOV ESP, EBP
  368. POP EBP
  369. JMP [_VerInstallFile]
  370. end;
  371. end;
  372. var
  373. _GetFileVersionInfoSizeA: Pointer;
  374. function GetFileVersionInfoSizeA;
  375. begin
  376. GetProcedureAddress(_GetFileVersionInfoSizeA, versionlib, 'GetFileVersionInfoSizeA');
  377. asm
  378. MOV ESP, EBP
  379. POP EBP
  380. JMP [_GetFileVersionInfoSizeA]
  381. end;
  382. end;
  383. var
  384. _GetFileVersionInfoSizeW: Pointer;
  385. function GetFileVersionInfoSizeW;
  386. begin
  387. GetProcedureAddress(_GetFileVersionInfoSizeW, versionlib, 'GetFileVersionInfoSizeW');
  388. asm
  389. MOV ESP, EBP
  390. POP EBP
  391. JMP [_GetFileVersionInfoSizeW]
  392. end;
  393. end;
  394. var
  395. _GetFileVersionInfoSize: Pointer;
  396. function GetFileVersionInfoSize;
  397. begin
  398. GetProcedureAddress(_GetFileVersionInfoSize, versionlib, 'GetFileVersionInfoSize' + AWSuffix);
  399. asm
  400. MOV ESP, EBP
  401. POP EBP
  402. JMP [_GetFileVersionInfoSize]
  403. end;
  404. end;
  405. var
  406. _GetFileVersionInfoA: Pointer;
  407. function GetFileVersionInfoA;
  408. begin
  409. GetProcedureAddress(_GetFileVersionInfoA, versionlib, 'GetFileVersionInfoA');
  410. asm
  411. MOV ESP, EBP
  412. POP EBP
  413. JMP [_GetFileVersionInfoA]
  414. end;
  415. end;
  416. var
  417. _GetFileVersionInfoW: Pointer;
  418. function GetFileVersionInfoW;
  419. begin
  420. GetProcedureAddress(_GetFileVersionInfoW, versionlib, 'GetFileVersionInfoW');
  421. asm
  422. MOV ESP, EBP
  423. POP EBP
  424. JMP [_GetFileVersionInfoW]
  425. end;
  426. end;
  427. var
  428. _GetFileVersionInfo: Pointer;
  429. function GetFileVersionInfo;
  430. begin
  431. GetProcedureAddress(_GetFileVersionInfo, versionlib, 'GetFileVersionInfo' + AWSuffix);
  432. asm
  433. MOV ESP, EBP
  434. POP EBP
  435. JMP [_GetFileVersionInfo]
  436. end;
  437. end;
  438. var
  439. _VerLanguageNameA: Pointer;
  440. function VerLanguageNameA;
  441. begin
  442. GetProcedureAddress(_VerLanguageNameA, versionlib, 'VerLanguageNameA');
  443. asm
  444. MOV ESP, EBP
  445. POP EBP
  446. JMP [_VerLanguageNameA]
  447. end;
  448. end;
  449. var
  450. _VerLanguageNameW: Pointer;
  451. function VerLanguageNameW;
  452. begin
  453. GetProcedureAddress(_VerLanguageNameW, versionlib, 'VerLanguageNameW');
  454. asm
  455. MOV ESP, EBP
  456. POP EBP
  457. JMP [_VerLanguageNameW]
  458. end;
  459. end;
  460. var
  461. _VerLanguageName: Pointer;
  462. function VerLanguageName;
  463. begin
  464. GetProcedureAddress(_VerLanguageName, versionlib, 'VerLanguageName' + AWSuffix);
  465. asm
  466. MOV ESP, EBP
  467. POP EBP
  468. JMP [_VerLanguageName]
  469. end;
  470. end;
  471. var
  472. _VerQueryValueA: Pointer;
  473. function VerQueryValueA;
  474. begin
  475. GetProcedureAddress(_VerQueryValueA, versionlib, 'VerQueryValueA');
  476. asm
  477. MOV ESP, EBP
  478. POP EBP
  479. JMP [_VerQueryValueA]
  480. end;
  481. end;
  482. var
  483. _VerQueryValueW: Pointer;
  484. function VerQueryValueW;
  485. begin
  486. GetProcedureAddress(_VerQueryValueW, versionlib, 'VerQueryValueW');
  487. asm
  488. MOV ESP, EBP
  489. POP EBP
  490. JMP [_VerQueryValueW]
  491. end;
  492. end;
  493. var
  494. _VerQueryValue: Pointer;
  495. function VerQueryValue;
  496. begin
  497. GetProcedureAddress(_VerQueryValue, versionlib, 'VerQueryValue' + AWSuffix);
  498. asm
  499. MOV ESP, EBP
  500. POP EBP
  501. JMP [_VerQueryValue]
  502. end;
  503. end;
  504. {$ELSE}
  505. function VerFindFileA; external versionlib name 'VerFindFileA';
  506. function VerFindFileW; external versionlib name 'VerFindFileW';
  507. function VerFindFile; external versionlib name 'VerFindFile' + AWSuffix;
  508. function VerInstallFileA; external versionlib name 'VerInstallFileA';
  509. function VerInstallFileW; external versionlib name 'VerInstallFileW';
  510. function VerInstallFile; external versionlib name 'VerInstallFile' + AWSuffix;
  511. function GetFileVersionInfoSizeA; external versionlib name 'GetFileVersionInfoSizeA';
  512. function GetFileVersionInfoSizeW; external versionlib name 'GetFileVersionInfoSizeW';
  513. function GetFileVersionInfoSize; external versionlib name 'GetFileVersionInfoSize' + AWSuffix;
  514. function GetFileVersionInfoA; external versionlib name 'GetFileVersionInfoA';
  515. function GetFileVersionInfoW; external versionlib name 'GetFileVersionInfoW';
  516. function GetFileVersionInfo; external versionlib name 'GetFileVersionInfo' + AWSuffix;
  517. function VerLanguageNameA; external versionlib name 'VerLanguageNameA';
  518. function VerLanguageNameW; external versionlib name 'VerLanguageNameW';
  519. function VerLanguageName; external versionlib name 'VerLanguageName' + AWSuffix;
  520. function VerQueryValueA; external versionlib name 'VerQueryValueA';
  521. function VerQueryValueW; external versionlib name 'VerQueryValueW';
  522. function VerQueryValue; external versionlib name 'VerQueryValue' + AWSuffix;
  523. {$ENDIF DYNAMIC_LINK}
  524. {$ENDIF JWA_IMPLEMENTATIONSECTION}
  525. {$IFNDEF JWA_INCLUDEMODE}
  526. end.
  527. {$ENDIF !JWA_INCLUDEMODE}