下面的函数可以得到文件的版本信息,注意,delphi做的程序,如果想 包含版本信息, 必须在菜单"project/options/version info"里面 添加版本信息. function GetVersion(filename:string):string; var InfoSize, Wnd: DWORD; VerBuf: Pointer; szName: array[0..255] of Char; Value: Pointer; Len: UINT; TransString:string; begin InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd); if InfoSize <> 0 then begin GetMem(VerBuf, InfoSize); try if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then begin Value :=nil; VerQueryValue(VerBuf, '\VarFileInfo\Translation', Value, Len); if Value <> nil then TransString := IntToHex(MakeLong(HiWord(Longint(Value^)), LoWord(Longint(Value^))), 8); Result := ''; StrPCopy(szName, '\StringFileInfo\'+Transstring+'\FileVersion'); ^^^^^^^此处换成ProductVersion得到的是"产品版本" if VerQueryValue(VerBuf, szName, Value, Len) then Result := StrPas(PChar(Value)); end; finally FreeMem(VerBuf); end; end; end;
DWORD dwOSVersionInfoSize;
DWORD dwMajorVersion;
DWORD dwMinorVersion;
DWORD dwBuildNumber;
DWORD dwPlatformId;
TCHAR szCSDVersion[ 128 ];
WORD wServicePackMajor;
WORD wServicePackMinor;
WORD wSuiteMask;
BYTE wProductType;
BYTE wReserved;
} OSVERSIONINFOEX, *POSVERSIONINFOEX, *LPOSVERSIONINFOEX;
可以使用GetVersionEx ()和VerifyVersionInfo ()得到系统信息和比较系统是否适合要求
包含版本信息, 必须在菜单"project/options/version info"里面
添加版本信息.
function GetVersion(filename:string):string;
var
InfoSize, Wnd: DWORD;
VerBuf: Pointer;
szName: array[0..255] of Char;
Value: Pointer;
Len: UINT;
TransString:string;
begin
InfoSize := GetFileVersionInfoSize(PChar(FileName), Wnd);
if InfoSize <> 0 then
begin
GetMem(VerBuf, InfoSize);
try
if GetFileVersionInfo(PChar(FileName), Wnd, InfoSize, VerBuf) then
begin
Value :=nil;
VerQueryValue(VerBuf, '\VarFileInfo\Translation', Value, Len);
if Value <> nil then
TransString := IntToHex(MakeLong(HiWord(Longint(Value^)), LoWord(Longint(Value^))), 8);
Result := '';
StrPCopy(szName, '\StringFileInfo\'+Transstring+'\FileVersion');
^^^^^^^此处换成ProductVersion得到的是"产品版本"
if VerQueryValue(VerBuf, szName, Value, Len) then
Result := StrPas(PChar(Value));
end;
finally
FreeMem(VerBuf);
end;
end;
end;
直接使用以下系统全局变量
Win32BuildNumber : Integer; 操作系统建立号(Build number) Win32csdVersion : string; 系统附加信息,如NT的服务软件包(server pack)
Win32MajorVersion : integer; 大版本号。 5表示Windows2000
Win32MinorVersion : Integer; 小版本号。10表示Win98