I get Windows version like this:

type
  TVersaoDoWindows =
   (
    vwDesconhecida,
    // Informações simplificadas
    Serie9x, // 32s em 3.11, 95, 98 e Me
    SerieNT, // NT 3.51, NT, 2000 e XP
    // Informações completas
    vwWin32sEm311,
    vwWinNT351,
    vwWin95,
    vwWinNT,
    vwWin98,
    vwWinMe,
    vwWin2000,
    vwWinXP,
    vwWin2003,
    vwWinVista,  // Ou superior
    vwWinLongHorn  // Ou superior
   );

{*******************************************************************
*  TGlass.VersaoDoWindows ()
*
*  DESCRIPTION:    Returns the Windows Version
*
*  PARAMETERS:
*
*  RETURNS:
*
*******************************************************************}
function TGlass.VersaoDoWindows(ApenasSerie: Boolean): TVersaoDoWindows;
{$IFDEF Win32}
var
  Versao: TOSVersionInfo;
{$ENDIF}
begin
  Result := vwDesconhecida;

{$IFDEF Win32}
  {----------------------------------------------
    Inicializações
   ----------------------------------------------}
  Versao.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
  if not GetVersionEx(Versao) then Exit;

  {----------------------------------------------
    Verifica qual o sistema operacional
   ----------------------------------------------
    Serie 9x
   ----------------------------------------------}
  if Versao.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS then
  begin
    if ApenasSerie then Result := Serie9x
    else
    begin
      if (Win32MajorVersion = 4) and
       (Win32MinorVersion = 90) then
       Result := vwWinMe
      else if (Win32MajorVersion = 4) and
       (Win32MinorVersion = 10) then
       Result := vwWin98
      else Result := vwWin95;
    end;
  end
  {----------------------------------------------
    Série NT
   ----------------------------------------------}
  else if Versao.dwPlatformId = VER_PLATFORM_WIN32_NT then
  begin
    if ApenasSerie then Result := SerieNT
    else
    begin
      if (Win32MajorVersion = 3) and
       (Win32MinorVersion = 10) then
       Result := vwWinNT351
      else if (Win32MajorVersion = 4) then
       Result := vwWinNT
      else if (Win32MajorVersion = 5) and (Win32MinorVersion = 0) then
       Result := vwWin2000
      else if (Win32MajorVersion = 5) and (Win32MinorVersion = 1) then
       Result := vwWinXP
      else if (Win32MajorVersion = 5) and (Win32MinorVersion = 2) then
       Result := vwWin2003
      else if (Win32MajorVersion >= 6) then
       Result := vwWinVista;
    end;
  end
  {----------------------------------------------
    Série 32s operando no 3.11
    (OBS: Se pediu apenas série responde 9x, pois não é da NT,
   mas, na verdade, representa uma série aparte).
   ----------------------------------------------}
  else
  begin
    if ApenasSerie then Result := Serie9x
    else Result := vwWin32sEm311;
  end;
{$ENDIF}
end;

--
Felipe Monteiro de Carvalho

_________________________________________________________________
     To unsubscribe: mail [EMAIL PROTECTED] with
                "unsubscribe" as the Subject
   archives at http://www.lazarus.freepascal.org/mailarchives

Reply via email to