📄 winver.pas
字号:
{******************************************************************}
{ }
{ Borland Delphi Runtime Library }
{ Verions interface unit }
{ }
{ Portions created by Microsoft are }
{ Copyright (C) 1995-1999 Microsoft Corporation. }
{ All Rights Reserved. }
{ }
{ The original file is: winver.h, released June 2000. }
{ The original Pascal code is: WinVer.pas, released December 2000 }
{ The initial developer of the Pascal code is Marcel van Brakel }
{ (brakelm@bart.nl). }
{ }
{ Portions created by Marcel van Brakel are }
{ Copyright (C) 1999 Marcel van Brakel. }
{ }
{ Obtained through: }
{ Joint Endeavour of Delphi Innovators (Project JEDI) }
{ }
{ You may retrieve the latest version of this file at the Project }
{ JEDI home page, located at http://delphi-jedi.org }
{ }
{ The contents of this file are used with permission, subject to }
{ the Mozilla Public License Version 1.1 (the "License"); you may }
{ not use this file except in compliance with the License. You may }
{ obtain a copy of the License at }
{ http://www.mozilla.org/MPL/MPL-1.1.html }
{ }
{ Software distributed under the License is distributed on an }
{ "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or }
{ implied. See the License for the specific language governing }
{ rights and limitations under the License. }
{ }
{******************************************************************}
unit WinVer;
{$WEAKPACKAGEUNIT}
{$HPPEMIT ''}
{$HPPEMIT '#include "WinVer.h"'}
{$HPPEMIT ''}
{$I WINDEFINES.INC}
interface
uses
WinUser, WinType;
const
// RT_VERSION = MAKEINTRESOURCE(16);
// ----- Symbols -----
VS_FILE_INFO = RT_VERSION;
{$EXTERNALSYM VS_FILE_INFO}
VS_VERSION_INFO = 1;
{$EXTERNALSYM VS_VERSION_INFO}
VS_USER_DEFINED = 100;
{$EXTERNALSYM VS_USER_DEFINED}
// ----- VS_VERSION.dwFileFlags -----
VS_FFI_SIGNATURE = $FEEF04BD;
{$EXTERNALSYM VS_FFI_SIGNATURE}
VS_FFI_STRUCVERSION = $00010000;
{$EXTERNALSYM VS_FFI_STRUCVERSION}
VS_FFI_FILEFLAGSMASK = $0000003F;
{$EXTERNALSYM VS_FFI_FILEFLAGSMASK}
// ----- VS_VERSION.dwFileFlags -----
VS_FF_DEBUG = $00000001;
{$EXTERNALSYM VS_FF_DEBUG}
VS_FF_PRERELEASE = $00000002;
{$EXTERNALSYM VS_FF_PRERELEASE}
VS_FF_PATCHED = $00000004;
{$EXTERNALSYM VS_FF_PATCHED}
VS_FF_PRIVATEBUILD = $00000008;
{$EXTERNALSYM VS_FF_PRIVATEBUILD}
VS_FF_INFOINFERRED = $00000010;
{$EXTERNALSYM VS_FF_INFOINFERRED}
VS_FF_SPECIALBUILD = $00000020;
{$EXTERNALSYM VS_FF_SPECIALBUILD}
// ----- VS_VERSION.dwFileOS -----
VOS_UNKNOWN = $00000000;
{$EXTERNALSYM VOS_UNKNOWN}
VOS_DOS = $00010000;
{$EXTERNALSYM VOS_DOS}
VOS_OS216 = $00020000;
{$EXTERNALSYM VOS_OS216}
VOS_OS232 = $00030000;
{$EXTERNALSYM VOS_OS232}
VOS_NT = $00040000;
{$EXTERNALSYM VOS_NT}
VOS__BASE = $00000000;
{$EXTERNALSYM VOS__BASE}
VOS__WINDOWS16 = $00000001;
{$EXTERNALSYM VOS__WINDOWS16}
VOS__PM16 = $00000002;
{$EXTERNALSYM VOS__PM16}
VOS__PM32 = $00000003;
{$EXTERNALSYM VOS__PM32}
VOS__WINDOWS32 = $00000004;
{$EXTERNALSYM VOS__WINDOWS32}
VOS_DOS_WINDOWS16 = $00010001;
{$EXTERNALSYM VOS_DOS_WINDOWS16}
VOS_DOS_WINDOWS32 = $00010004;
{$EXTERNALSYM VOS_DOS_WINDOWS32}
VOS_OS216_PM16 = $00020002;
{$EXTERNALSYM VOS_OS216_PM16}
VOS_OS232_PM32 = $00030003;
{$EXTERNALSYM VOS_OS232_PM32}
VOS_NT_WINDOWS32 = $00040004;
{$EXTERNALSYM VOS_NT_WINDOWS32}
// ----- VS_VERSION.dwFileType -----
VFT_UNKNOWN = $00000000;
{$EXTERNALSYM VFT_UNKNOWN}
VFT_APP = $00000001;
{$EXTERNALSYM VFT_APP}
VFT_DLL = $00000002;
{$EXTERNALSYM VFT_DLL}
VFT_DRV = $00000003;
{$EXTERNALSYM VFT_DRV}
VFT_FONT = $00000004;
{$EXTERNALSYM VFT_FONT}
VFT_VXD = $00000005;
{$EXTERNALSYM VFT_VXD}
VFT_STATIC_LIB = $00000007;
{$EXTERNALSYM VFT_STATIC_LIB}
// ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_DRV -----
VFT2_UNKNOWN = $00000000;
{$EXTERNALSYM VFT2_UNKNOWN}
VFT2_DRV_PRINTER = $00000001;
{$EXTERNALSYM VFT2_DRV_PRINTER}
VFT2_DRV_KEYBOARD = $00000002;
{$EXTERNALSYM VFT2_DRV_KEYBOARD}
VFT2_DRV_LANGUAGE = $00000003;
{$EXTERNALSYM VFT2_DRV_LANGUAGE}
VFT2_DRV_DISPLAY = $00000004;
{$EXTERNALSYM VFT2_DRV_DISPLAY}
VFT2_DRV_MOUSE = $00000005;
{$EXTERNALSYM VFT2_DRV_MOUSE}
VFT2_DRV_NETWORK = $00000006;
{$EXTERNALSYM VFT2_DRV_NETWORK}
VFT2_DRV_SYSTEM = $00000007;
{$EXTERNALSYM VFT2_DRV_SYSTEM}
VFT2_DRV_INSTALLABLE = $00000008;
{$EXTERNALSYM VFT2_DRV_INSTALLABLE}
VFT2_DRV_SOUND = $00000009;
{$EXTERNALSYM VFT2_DRV_SOUND}
VFT2_DRV_COMM = $0000000A;
{$EXTERNALSYM VFT2_DRV_COMM}
VFT2_DRV_INPUTMETHOD = $0000000B;
{$EXTERNALSYM VFT2_DRV_INPUTMETHOD}
// ----- VS_VERSION.dwFileSubtype for VFT_WINDOWS_FONT -----
VFT2_FONT_RASTER = $00000001;
{$EXTERNALSYM VFT2_FONT_RASTER}
VFT2_FONT_VECTOR = $00000002;
{$EXTERNALSYM VFT2_FONT_VECTOR}
VFT2_FONT_TRUETYPE = $00000003;
{$EXTERNALSYM VFT2_FONT_TRUETYPE}
// ----- VerFindFile() flags -----
VFFF_ISSHAREDFILE = $0001;
{$EXTERNALSYM VFFF_ISSHAREDFILE}
VFF_CURNEDEST = $0001;
{$EXTERNALSYM VFF_CURNEDEST}
VFF_FILEINUSE = $0002;
{$EXTERNALSYM VFF_FILEINUSE}
VFF_BUFFTOOSMALL = $0004;
{$EXTERNALSYM VFF_BUFFTOOSMALL}
// ----- VerInstallFile() flags -----
VIFF_FORCEINSTALL = $0001;
{$EXTERNALSYM VIFF_FORCEINSTALL}
VIFF_DONTDELETEOLD = $0002;
{$EXTERNALSYM VIFF_DONTDELETEOLD}
VIF_TEMPFILE = $00000001;
{$EXTERNALSYM VIF_TEMPFILE}
VIF_MISMATCH = $00000002;
{$EXTERNALSYM VIF_MISMATCH}
VIF_SRCOLD = $00000004;
{$EXTERNALSYM VIF_SRCOLD}
VIF_DIFFLANG = $00000008;
{$EXTERNALSYM VIF_DIFFLANG}
VIF_DIFFCODEPG = $00000010;
{$EXTERNALSYM VIF_DIFFCODEPG}
VIF_DIFFTYPE = $00000020;
{$EXTERNALSYM VIF_DIFFTYPE}
VIF_WRITEPROT = $00000040;
{$EXTERNALSYM VIF_WRITEPROT}
VIF_FILEINUSE = $00000080;
{$EXTERNALSYM VIF_FILEINUSE}
VIF_OUTOFSPACE = $00000100;
{$EXTERNALSYM VIF_OUTOFSPACE}
VIF_ACCESSVIOLATION = $00000200;
{$EXTERNALSYM VIF_ACCESSVIOLATION}
VIF_SHARINGVIOLATION = $00000400;
{$EXTERNALSYM VIF_SHARINGVIOLATION}
VIF_CANNOTCREATE = $00000800;
{$EXTERNALSYM VIF_CANNOTCREATE}
VIF_CANNOTDELETE = $00001000;
{$EXTERNALSYM VIF_CANNOTDELETE}
VIF_CANNOTRENAME = $00002000;
{$EXTERNALSYM VIF_CANNOTRENAME}
VIF_CANNOTDELETECUR = $00004000;
{$EXTERNALSYM VIF_CANNOTDELETECUR}
VIF_OUTOFMEMORY = $00008000;
{$EXTERNALSYM VIF_OUTOFMEMORY}
VIF_CANNOTREADSRC = $00010000;
{$EXTERNALSYM VIF_CANNOTREADSRC}
VIF_CANNOTREADDST = $00020000;
{$EXTERNALSYM VIF_CANNOTREADDST}
VIF_BUFFTOOSMALL = $00040000;
{$EXTERNALSYM VIF_BUFFTOOSMALL}
VIF_CANNOTLOADLZ32 = $00080000;
{$EXTERNALSYM VIF_CANNOTLOADLZ32}
VIF_CANNOTLOADCABINET = $00100000;
{$EXTERNALSYM VIF_CANNOTLOADCABINET}
// ----- Types and structures -----
type
PTagvsFixedFileInfo = ^VS_FIXEDFILEINFO;
tagVS_FIXEDFILEINFO = record
dwSignature: DWORD; // e.g. 0xfeef04bd
dwStrucVersion: DWORD; // e.g. 0x00000042 = "0.42"
dwFileVersionMS: DWORD; // e.g. 0x00030075 = "3.75"
dwFileVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
dwProductVersionMS: DWORD; // e.g. 0x00030010 = "3.10"
dwProductVersionLS: DWORD; // e.g. 0x00000031 = "0.31"
dwFileFlagsMask: DWORD; // = 0x3F for version "0.42"
dwFileFlags: DWORD; // e.g. VFF_DEBUG | VFF_PRERELEASE
dwFileOS: DWORD; // e.g. VOS_DOS_WINDOWS16
dwFileType: DWORD; // e.g. VFT_DRIVER
dwFileSubtype: DWORD; // e.g. VFT2_DRV_KEYBOARD
dwFileDateMS: DWORD; // e.g. 0
dwFileDateLS: DWORD; // e.g. 0
end;
{$EXTERNALSYM tagVS_FIXEDFILEINFO}
VS_FIXEDFILEINFO = tagVS_FIXEDFILEINFO;
{$EXTERNALSYM VS_FIXEDFILEINFO}
TTagvsFixedFileInfo = VS_FIXEDFILEINFO;
// ----- Function prototypes -----
function VerFindFileA(uFlags: DWORD; szFileName, szWinDir, szAppDir,
szCurDir: LPSTR; var lpuCurDirLen: UINT; szDestDir: LPSTR;
var lpuDestDirLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerFindFileA}
function VerFindFileW(uFlags: DWORD; szFileName, szWinDir, szAppDir,
szCurDir: LPWSTR; var lpuCurDirLen: UINT; szDestDir: LPWSTR;
var lpuDestDirLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerFindFileW}
{$IFDEF UNICODE}
function VerFindFile(uFlags: DWORD; szFileName, szWinDir, szAppDir,
szCurDir: LPWSTR; var lpuCurDirLen: UINT; szDestDir: LPWSTR;
var lpuDestDirLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerFindFile}
{$ELSE}
function VerFindFile(uFlags: DWORD; szFileName, szWinDir, szAppDir,
szCurDir: LPSTR; var lpuCurDirLen: UINT; szDestDir: LPSTR;
var lpuDestDirLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerFindFile}
{$ENDIF}
function VerInstallFileA(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
szDestDir, szCurDir, szTmpFile: LPSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerInstallFileA}
function VerInstallFileW(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
szDestDir, szCurDir, szTmpFile: LPWSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerInstallFileW}
{$IFDEF UNICODE}
function VerInstallFile(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
szDestDir, szCurDir, szTmpFile: LPWSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerInstallFile}
{$ELSE}
function VerInstallFile(uFlags: DWORD; szSrcFileName, szDestFileName, szSrcDir,
szDestDir, szCurDir, szTmpFile: LPSTR; var lpuTmpFileLen: UINT): DWORD; stdcall;
{$EXTERNALSYM VerInstallFile}
{$ENDIF}
// Returns size of version info in bytes
function GetFileVersionInfoSizeA(lptstrFilename: LPSTR; var lpdwHandle: DWORD): DWORD; stdcall;
{$EXTERNALSYM GetFileVersionInfoSizeA}
function GetFileVersionInfoSizeW(lptstrFilename: LPWSTR; var lpdwHandle: DWORD): DWORD; stdcall;
{$EXTERNALSYM GetFileVersionInfoSizeW}
{$IFDEF UNICODE}
function GetFileVersionInfoSize(lptstrFilename: LPWSTR; var lpdwHandle: DWORD): DWORD; stdcall;
{$EXTERNALSYM GetFileVersionInfoSize}
{$ELSE}
function GetFileVersionInfoSize(lptstrFilename: LPSTR; var lpdwHandle: DWORD): DWORD; stdcall;
{$EXTERNALSYM GetFileVersionInfoSize}
{$ENDIF}
// Read version info into buffer
function GetFileVersionInfoA(lptstrFilename: LPSTR; dwHandle, dwLen: DWORD;
lpData: LPVOID): BOOL; stdcall;
{$EXTERNALSYM GetFileVersionInfoA}
function GetFileVersionInfoW(lptstrFilename: LPWSTR; dwHandle, dwLen: DWORD;
lpData: LPVOID): BOOL; stdcall;
{$EXTERNALSYM GetFileVersionInfoW}
{$IFDEF UNICODE}
function GetFileVersionInfo(lptstrFilename: LPWSTR; dwHandle, dwLen: DWORD;
lpData: LPVOID): BOOL; stdcall;
{$EXTERNALSYM GetFileVersionInfo}
{$ELSE}
function GetFileVersionInfo(lptstrFilename: LPSTR; dwHandle, dwLen: DWORD;
lpData: LPVOID): BOOL; stdcall;
{$EXTERNALSYM GetFileVersionInfo}
{$ENDIF}
function VerLanguageNameA(wLang: DWORD; szLang: LPSTR; nSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM VerLanguageNameA}
function VerLanguageNameW(wLang: DWORD; szLang: LPWSTR; nSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM VerLanguageNameW}
{$IFDEF UNICODE}
function VerLanguageName(wLang: DWORD; szLang: LPWSTR; nSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM VerLanguageName}
{$ELSE}
function VerLanguageName(wLang: DWORD; szLang: LPSTR; nSize: DWORD): DWORD; stdcall;
{$EXTERNALSYM VerLanguageName}
{$ENDIF}
function VerQueryValueA(pBlock: LPVOID; lpSubBlock: LPSTR; var lplpBuffer: LPVOID;
var puLen: UINT): BOOL; stdcall;
{$EXTERNALSYM VerQueryValueA}
function VerQueryValueW(pBlock: LPVOID; lpSubBlock: LPWSTR; var lplpBuffer: LPVOID;
var puLen: UINT): BOOL; stdcall;
{$EXTERNALSYM VerQueryValueW}
{$IFDEF UNICODE}
function VerQueryValue(pBlock: LPVOID; lpSubBlock: LPWSTR; var lplpBuffer: LPVOID;
var puLen: UINT): BOOL; stdcall;
{$EXTERNALSYM VerQueryValue}
{$ELSE}
function VerQueryValue(pBlock: LPVOID; lpSubBlock: LPSTR; var lplpBuffer: LPVOID;
var puLen: UINT): BOOL; stdcall;
{$EXTERNALSYM VerQueryValue}
{$ENDIF}
implementation
const
Version = 'version.dll';
function VerFindFileA; external Version name 'VerFindFileA';
function VerFindFileW; external Version name 'VerFindFileW';
{$IFDEF UNICODE}
function VerFindFile; external Version name 'VerFindFileW';
{$ELSE}
function VerFindFile; external Version name 'VerFindFileA';
{$ENDIF}
function VerInstallFileA; external Version name 'VerInstallFileA';
function VerInstallFileW; external Version name 'VerInstallFileW';
{$IFDEF UNICODE}
function VerInstallFile; external Version name 'VerInstallFileW';
{$ELSE}
function VerInstallFile; external Version name 'VerInstallFileA';
{$ENDIF}
function GetFileVersionInfoSizeA; external Version name 'GetFileVersionInfoSizeA';
function GetFileVersionInfoSizeW; external Version name 'GetFileVersionInfoSizeW';
{$IFDEF UNICODE}
function GetFileVersionInfoSize; external Version name 'GetFileVersionInfoSizeW';
{$ELSE}
function GetFileVersionInfoSize; external Version name 'GetFileVersionInfoSizeA';
{$ENDIF}
function GetFileVersionInfoA; external Version name 'GetFileVersionInfoA';
function GetFileVersionInfoW; external Version name 'GetFileVersionInfoW';
{$IFDEF UNICODE}
function GetFileVersionInfo; external Version name 'GetFileVersionInfoW';
{$ELSE}
function GetFileVersionInfo; external Version name 'GetFileVersionInfoA';
{$ENDIF}
function VerLanguageNameA; external Version name 'VerLanguageNameA';
function VerLanguageNameW; external Version name 'VerLanguageNameW';
{$IFDEF UNICODE}
function VerLanguageName; external Version name 'VerLanguageNameW';
{$ELSE}
function VerLanguageName; external Version name 'VerLanguageNameA';
{$ENDIF}
function VerQueryValueA; external Version name 'VerQueryValueA';
function VerQueryValueW; external Version name 'VerQueryValueW';
{$IFDEF UNICODE}
function VerQueryValue; external Version name 'VerQueryValueW';
{$ELSE}
function VerQueryValue; external Version name 'VerQueryValueA';
{$ENDIF}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -