function GetWindowsVersion: string; var VersionInfo: TOSVersionInfo; begin VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo); GetVersionEx(VersionInfo); with VersionInfo do begin case dwPlatformid of 0: begin result := 'Windows 3.11'; end; 1: begin case dwMinorVersion of 0 : result := 'Windows 95'; 10: begin if ( szCSDVersion[ 1 ] = 'A' ) then Result :='Windows 98 SE' else Result := 'Windows 98'; end; 90 : result := 'Windows Millenium'; else result := 'Unknown Version'; end; end; 2: begin case dwMajorVersion of 3 : result := 'Windows NT ' + IntToStr(dwMajorVersion) + '.' + IntToStr(dwMinorVersion); 4 : result := 'Windows NT ' + IntToStr(dwMajorVersion) + '.' + IntToStr(dwMinorVersion); 5 : begin case dwMinorVersion of 0 : result := 'Windows 2000'; 1 : result := 'Windows XP'; end; end; else result := 'Unknown Version'; end; if szCSDVersion <> '' then result := result + ' Service pack: ' + szCSDVersion; end; else result := 'Unknown Platform'; end; result := result + ', Build: ' + IntToStr(Loword(dwBuildNumber)) ; end; end;
可以参考下面,很容易的得到版本的原始信息。根据需要再作处理 GetVersion取到的版本信息是一个整体,要取得某个主版本或者次版本很麻烦,用一个记录就可以简单解决了: procedure TForm1.Button1Click(Sender: TObject); Type TVersion = packed record WinVer, WinRev, DosRev, DosVer: byte; end; var V:Dword; begin V:=GetVersion; Label1.Caption :=Format('Windows Version:%d.%d,Dos Version:%d.%d',[TVersion(V).WinVer,TVersion(V).WinRev,Tversion(V).DosVer,TVersion(V).DosRev]); end; //Delphi中还有以下的系统常量 Win32BuildNumber //Build版本号 Win32Platform //系统平台,2=Win32系统 Win32MajorVersion //主版本号 Win32MinorVersion //次版本号 Win32CSDVersion //其他版本信息,例如"Service Pack 2"
var
VersionInfo: TOSVersionInfo;
begin
VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
GetVersionEx(VersionInfo);
with VersionInfo do
begin
case dwPlatformid of
0: begin
result := 'Windows 3.11';
end; 1: begin
case dwMinorVersion of
0 : result := 'Windows 95';
10: begin
if ( szCSDVersion[ 1 ] = 'A' ) then
Result :='Windows 98 SE'
else
Result := 'Windows 98';
end;
90 : result := 'Windows Millenium';
else
result := 'Unknown Version';
end;
end;
2: begin
case dwMajorVersion of
3 : result := 'Windows NT ' +
IntToStr(dwMajorVersion) + '.' +
IntToStr(dwMinorVersion);
4 : result := 'Windows NT ' +
IntToStr(dwMajorVersion) + '.' +
IntToStr(dwMinorVersion);
5 : begin
case dwMinorVersion of
0 : result := 'Windows 2000';
1 : result := 'Windows XP';
end;
end;
else
result := 'Unknown Version';
end;
if szCSDVersion <> '' then
result := result + ' Service pack: ' + szCSDVersion;
end;
else
result := 'Unknown Platform';
end;
result := result + ', Build: ' +
IntToStr(Loword(dwBuildNumber)) ;
end;
end;
GetVersion取到的版本信息是一个整体,要取得某个主版本或者次版本很麻烦,用一个记录就可以简单解决了:
procedure TForm1.Button1Click(Sender: TObject);
Type
TVersion = packed record
WinVer,
WinRev,
DosRev,
DosVer: byte;
end;
var
V:Dword;
begin
V:=GetVersion;
Label1.Caption :=Format('Windows Version:%d.%d,Dos Version:%d.%d',[TVersion(V).WinVer,TVersion(V).WinRev,Tversion(V).DosVer,TVersion(V).DosRev]);
end;
//Delphi中还有以下的系统常量
Win32BuildNumber //Build版本号
Win32Platform //系统平台,2=Win32系统
Win32MajorVersion //主版本号
Win32MinorVersion //次版本号
Win32CSDVersion //其他版本信息,例如"Service Pack 2"