真笨。HOHO,那位大哥能给个具体的程序
Win32PlatForm这个还是用不来啊,唉。死了算了

解决方案 »

  1.   

    试试吧!!
    function Tform1.GetWindowsVersion : string;
    var
       WindowsInfo : TOSVersionInfo;
    begin
        WindowsInfo.dwOSVersionInfoSize := sizeof (OSVERSIONINFO);
        GetVersionEx(WindowsInfo);
        case WindowsInfo.dwPlatformId of
          VER_PLATFORM_WIN32_NT:
           begin
            if ( WindowsInfo.dwMajorVersion <= 4 ) then
             result :=  'Microsoft Windows NT';
            if (( WindowsInfo.dwMajorVersion = 5 ) and (WindowsInfo.dwMinorVersion = 0)) then
             result :=  'Microsoft Windows 2000'
             else if (( WindowsInfo.dwMajorVersion = 5 ) and (WindowsInfo.dwMinorVersion > 1)) then
             result :=  'Microsoft Windows XP';
             end;
          VER_PLATFORM_WIN32_WINDOWS:
           begin
            if ((WindowsInfo.dwMajorVersion > 4) or ((WindowsInfo.dwMajorVersion = 4) and (WindowsInfo.dwMinorVersion = 0))) then
             result := 'Microsoft Windows 98'
            else if ((WindowsInfo.dwMajorVersion > 4) or ((WindowsInfo.dwMajorVersion = 4) and (WindowsInfo.dwMinorVersion = 90))) then
             result := 'Microsoft Windows ME'
            else
             result := 'Microsoft Windows 95';
            end;
        else
           result := 'Win32s';
        end;
    end;
      

  2.   

    用API GetVersion ,不过结果被编码了:
      Type
        TGetVer = record
          WinVer,
          WinRev,
          DosRev,
          DosVer: Byte;
        end;
      const
        VerStr = '%d.%d';
      procedure TForm1.Button1Click(Sender: TObject);
      var
        AllVersions: TGetVer;
      begin
        AllVersions := TGetVer(GetVersion);
        Edit1.Text := Format(VerStr, [AllVersions.WinVer, AllVersions.WinRev]);
        Edit2.Text := Format(VerStr, [AllVersions.DOSVer, AllVersions.DOSRev]);
      end;
    注:返回的版本和真实版本未必相同;
    Note2: Win32应用程序需要用GetVersionEx--------------------------------------------------------------------------------
    {$IFDEF WIN32}
    function GetVersionEx(lpOs : pointer) : BOOL; stdcall;
     external 'kernel32' name 'GetVersionExA';
    {$ENDIF}procedure GetWindowsVersion(var Major : integer;
                                var Minor : integer);
    var
     {$IFDEF WIN32}
      lpOS, lpOS2 : POsVersionInfo;
     {$ELSE}
      l : longint;
     {$ENDIF}
    begin
     {$IFDEF WIN32}
       GetMem(lpOS, SizeOf(TOsVersionInfo));
       lpOs^.dwOSVersionInfoSize := SizeOf(TOsVersionInfo);
       while getVersionEx(lpOS) = false do begin
         GetMem(lpos2, lpos^.dwOSVersionInfoSize + 1);
         lpOs2^.dwOSVersionInfoSize := lpOs^.dwOSVersionInfoSize + 1;
         FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);
         lpOS := lpOs2;
       end;
       Major := lpOs^.dwMajorVersion;
       Minor := lpOs^.dwMinorVersion;
       FreeMem(lpOs, lpOs^.dwOSVersionInfoSize);
     {$ELSE}
      l := GetVersion;
      Major := LoByte(LoWord(l));
      Minor := HiByte(LoWord(l));
     {$ENDIF}
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      Major : integer;
      Minor : integer;
    begin
      GetWindowsVersion(Major, Minor);
      Memo1.Lines.Add(IntToStr(Major));
      Memo1.Lines.Add(IntToStr(Minor));
    end;--------------------------------------------------------------------------------
      if Win32Platform = VER_PLATFORM_WIN32_WINDOWS then
        ShowMessage('win9x');
      if Win32Platform = VER_PLATFORM_WIN32_NT then
        ShowMessage('winNT');--------------------------------------------------------------------------------
    procedure TForm1.Button1Click(Sender: TObject);
    var
    OS : TOSVersionInfo;
    begin
    OS.dwOSVersionInfoSize := sizeof(OS);
    GetVersionEx(OS);
    with OS do
        case dwPlatformId of
            VER_PLATFORM_WIN32s :
                  label1.caption := 'Windows 3.1x/32s';
            VER_PLATFORM_WIN32_WINDOWS :
                Begin
                    if (dwMajorVersion = 4) and (dwMinorVersion > 0) then
                    label1.caption := 'Windows 98'
                  else
                    label1.caption := 'Windows 95';
                end;
            VER_PLATFORM_WIN32_NT :
                label1.caption := 'Windows NT' ;
          end;
      end;--------------------------------------------------------------------------------
      Const  cOsUnknown : Integer = -1;  cOsWin95 : Integer = 0;  cOsWin98 : Integer = 1;  cOsWin98SE : Integer = 2;  cOsWinME : Integer = 3;  cOsWinNT : Integer = 4;  cOsWin2000 : Integer = 5;  cOsWhistler : Integer = 6;    Function GetOSVersion : Integer;  Function GetOSName( OSCode : Integer ) : String;    Function GetOSVersion : Integer;  Var  osVerInfo : TOSVersionInfo;  majorVer, minorVer : Integer;  Begin  Result := cOsUnknown;  osVerInfo.dwOSVersionInfoSize := SizeOf( TOSVersionInfo );  If ( GetVersionEx( osVerInfo ) ) Then Begin  majorVer := osVerInfo.dwMajorVersion;  minorVer := osVerInfo.dwMinorVersion;  Case ( osVerInfo.dwPlatformId ) Of  VER_PLATFORM_WIN32_NT : { Windows NT/2000 }  Begin  If ( majorVer <= 4 ) Then  Result := cOsWinNT  Else  If ( ( majorVer = 5 ) And ( minorVer= 0 ) ) Then  Result := cOsWin2000  Else  If ( ( majorVer = 5) And ( minorVer = 1 ) ) Then  Result := cOsWhistler  Else  Result := cOsUnknown;  End;  VER_PLATFORM_WIN32_WINDOWS : { Windows 9x/ME }  Begin  If ( ( majorVer = 4 ) And ( minorVer = 0 ) ) Then  Result := cOsWin95  Else If ( ( majorVer = 4 ) And ( minorVer = 10 ) ) Then Begin  If ( osVerInfo.szCSDVersion[ 1 ] = 'A' ) Then  Result := cOsWin98SE  Else  Result := cOsWin98;  End Else If ( ( majorVer = 4) And ( minorVer = 90 ) ) Then  Result := cOsWinME  Else  Result := cOsUnknown;  End;  Else  Result := cOsUnknown;  End;  End Else  Result := cOsUnknown;  End;    Function GetOSName( OSCode : Integer ) : String;  Begin  If ( OSCode = cOsUnknown ) Then  Result := '(sconosciuto)'  Else If ( OSCode = cOsWin95 ) Then  Result := 'Microsoft Windows 95'  Else If ( OSCode = cOsWin98 ) Then  Result := 'Microsoft Windows 98'  Else If ( OSCode = cOsWin98SE ) Then  Result := 'Microsoft Windows 98 Second Edition'  Else If ( OSCode = cOsWinME ) Then  Result := 'Microsoft Windows Millennium Edition'  Else If ( OSCode = cOsWinNT ) Then  Result := 'Microsoft Windows New Technology'  Else If ( OSCode = cOsWin2000 ) Then  Result := 'Microsoft Windows 2000 / NT 5'  Else  Result := 'Microsoft Windows';  End;  
      

  3.   

    下面的代码可以检查所用的系统是不是windows xp
    uses Registry; 
    ... function IsWinXP: Boolean; 
    begin 
      Result := False; 
      if Win32Platform = VER_PLATFORM_WIN32_NT then 
        with TRegistry.Create do 
        try 
          RootKey := HKEY_LOCAL_MACHINE; 
          if OpenKeyReadOnly('\Software\Microsoft\Windows NT\CurrentVersion') then 
            Result := (ReadString('ProductName') = 'Microsoft Windows XP'); 
        finally 
          Free; 
        end; 
    end;//rock
    //转载请保留此信息
      

  4.   

    靠!他们写的代码那么长。看看下面我写的。procedure TForm1.Button1Click(Sender:TObject);
    var
      OSVI:OSVERSIONINFO;
    begin
      //设置版本信息结构的大小
      OSVI.dwOSVersioninfoSize:=sizeof(OSVERSIONINFO);
      //获取版本信息
      GetVersionEx(OSVI);
      //先是信息
      Edit.Text:=IntToStr(OSVI.dwMajorVersion)+'.'
        +IntToStr(OSVI.dwMinorVersion)+'.'
        +IntToStr(OSVI.dwBuildNumber)+'.'
        +IntToStr(OSVI.dwPlatformld)+'.'
        +OSVI.szCSDVersion;
    end;