只要確琿是win98,win2000,winxp這樣子的。

解决方案 »

  1.   

    uses TypInfo;
    {$R *.dfm}
    type
       TOSVersion  =  (osUnknown,  os95,  os95OSR2,  os98,  os98SE,  osNT3,  osNT4,  os2K,  osME,osXP);
    //获取操作系统    
    function  GetOS:TOSVersion;
    var
       OS  :TOSVersionInfo;    
    begin
       ZeroMemory(@OS,SizeOf(OS));
       OS.dwOSVersionInfoSize:=SizeOf(OS);    
       GetVersionEx(OS);    
       Result:=osUnknown;    
       if  OS.dwPlatformId=VER_PLATFORM_WIN32_NT  then
           begin    
               case  OS.dwMajorVersion  of    
                   3:  Result:=osNT3;    
                   4:  Result:=osNT4;    
                   5:  begin
                             if  OS.dwMinorVersion>=1  then    
                                 Result:=osXP    
                             else    
                                 Result:=os2K;
                         end;
               end;    
           end    
       else    
           begin    
               if  (OS.dwMajorVersion=4)  and  (OS.dwMinorVersion=0)  then
                   begin    
                       Result:=os95;    
                       if  (Trim(OS.szCSDVersion)='B')  then    
                           Result:=os95OSR2;
                   end    
               else    
                   if  (OS.dwMajorVersion=4)  and  (OS.dwMinorVersion=10)  then
                       begin
                           Result:=os98;
                           if  (Trim(OS.szCSDVersion)='A')  then
                               Result:=os98SE;
                       end    
                   else
                       if  (OS.dwMajorVersion=4)  and  (OS.dwMinorVersion=90)  then
                           Result:=osME;
           end;    
    end;
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      showmessage(GetEnumName(TypeInfo(TOSVersion),Ord(GetOS)));
    end;
      

  2.   

    function GetWindowsVersion: string;
    var
      VersionInfo: TOSVersionInfo;
    begin
      VersionInfo.dwOSVersionInfoSize := SizeOf(VersionInfo);
      GetVersionEx(VersionInfo);
      with VersionInfo do
      begin
        case dwPlatformid of
          0: result := 'Windows 3.11';      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;
      

  3.   

    case Win32Platform of
          VER_PLATFORM_WIN32_WINDOWS:
           showmessage('win98')
          VER_PLATFORM_WIN32_NT:
           showmessage('winnt')
          end;