请参考(转)
function TCommunicationForm.MyGetVersion: String;
var
  VersionInfo : TOSVersionInfo;
  OSName      : String;
begin
  VersionInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );
  if Windows.GetVersionEx( VersionInfo ) then
  begin
    with VersionInfo do
    begin
      case dwPlatformId of
        VER_PLATFORM_WIN32s   : OSName := 'Win32s';
        VER_PLATFORM_WIN32_WINDOWS : OSName := 'Windows 95';
        VER_PLATFORM_WIN32_NT      : OSName := 'Windows NT';
      end;
      Result:=OSName+' Version '+IntToStr( dwMajorVersion )+'.'+IntToStr(dwMinorVersion)+#13#10' (Build ' + IntToStr(dwBuildNumber)+': '+szCSDVersion+')';
    end;
  end
  else
    Result:='';
end;

解决方案 »

  1.   

    function GetOSInfo:string;
    var
      Platform: string;
      BuildNumber: Integer;
    begin
      case Win32Platform of
        VER_PLATFORM_WIN32_WINDOWS:
          begin
            Platform := 'Windows 95/98';
            BuildNumber := Win32BuildNumber and $0000FFFF;
          end;
        VER_PLATFORM_WIN32_NT:
          begin
            Platform := 'Windows NT';
            BuildNumber := Win32BuildNumber;
          end;
          else
          begin
            Platform := 'Windows';
            BuildNumber := 0;
          end;
      end;
      if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) or
        (Win32Platform = VER_PLATFORM_WIN32_NT) then
      begin
        if Win32CSDVersion = '' then
          Result := Format('%s %d.%d (Build %d)', [Platform, Win32MajorVersion,
            Win32MinorVersion, BuildNumber])
        else
          Result := Format('%s %d.%d (Build %d: %s)', [Platform, Win32MajorVersion,
            Win32MinorVersion, BuildNumber, Win32CSDVersion]);
      end
      else
        Result := Format('%s %d.%d', [Platform, Win32MajorVersion,
          Win32MinorVersion])
    end;