Buscar

Verificando a versão do windows

nome

Diego De Queiroz Macedo

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Este artigo visa explicar como verificar qual versão do Windows está sendo utilizada.
 
Muitos artigos e dicas semelhantes existem, no entanto, ao ver que todos elas estão desatualizadas ou com informaões incompletas e/ou errôneas, resolvi escrever este artigo, que acredito que possui as informaões mais atualizadas.
O processo de verificaão do Windows é bastante simples, necessitando a utilizaão de apenas uma funão da API do Windows, no entanto, para um bom nível de conhecimento, estarei explicando Passo-a-passo, e, para os mais apressados, no final do artigo, escrevi uma funão prática que retorna a versão do Windows numa string. :-)
 
Por utilizar funões da API do Windows, certifique-se que a unit WINDOWS est declarada na seão USES do seu programa:
 
uses windows;
 
Tendo certeza disso, declare uma variável com do tipo TOSVersionInfo. Será nesta variável que o Windows armazenará todas as informaões sobre a versão do Sistema Operacional.
 
var VersionInfo: TOSVersionInfo;
 
Agora que nossa variável est declarada, bastaria que nós chamemos o procedimento GetVersionEx, passando esta variável como parâmetro, no entanto, o Windows pede que nós digamos o tamanho do nosso registro (esta variável no caso), armazenando este valor nele mesmo, através da variável dwOSVersionInfoSize, como é mostrado a seguir:
 
VersionInfo.dwOSVersionInfoSize:=SizeOf(VersionInfo);
 
Agora sim, podemos chamar com segurança nosso procedimento que nos dirá a versão do Windows utilizada:
 
GetVersionEx(VersionInfo);
 
Pronto! Nessa variável, nós podemos acessar os seguintes valores:
VersionInfo.dwPlatformId
VersionInfo.dwMajorVersion
VersionInfo.dwMinorVersion
VersionInfo.dwBuildNumber
VersionInfo.szCSDVersion
 
Destes valores, os que realmente irão nos interessar serão os três primeiros dwPlatformId, dwMajorVersion e dwMinorVersion, cujos valores serão preenchidos de acordo com a seguinte tabela:
 |--------------------------------------------------------------|
 |                | 95 | 98 | Me | NT 3.51 | NT 4.0 | 2000 | XP |
 |----------------|----|----|----|---------|--------|------|----|
 | PlatformID     |  1 |  1 |  1 |    2    |    2   |   2  |  2 |
 | Major Version  |  4 |  4 |  4 |    3    |    4   |   5  |  5 |
 | Minor Version  |  0 | 10 | 90 |    0    |    0   |   0  |  1 |
 |--------------------------------------------------------------|
                                       >>>>>>>> Fonte: Microsoft
 
Esta tabela foi retirada do site oficial da Microsoft, cujo conteúdo pode ser visualizada(em inglês) através do link http://support.microsoftcom/kb/189249/.
 
As demais variáveis como, dwBuildNumber e szCSDVersion, retornam informaões mais precisas sobre o sistema operacional, como por exemplo, no PC que estou utilizando a variável szCSDVersion retorna uma "Null-terminated string" (string terminada em nulo, ou seja, terminada com o caractere #0) com a informaão: "Service Pack 1", em outro PC que possuo aqui com Windows 98 (Primeira edião, se eu não me engano), o valor ' A ' é retornado.
 
Logo, como havia dito no início do artigo segue aqui anexa minha funão para retornar a versão do Windows:
 

function WinVersion: string;
var
  VersionInfo: TOSVersionInfo;
begin
  VersionInfo.dwOSVersionInfoSize:=SizeOf(VersionInfo);
  GetVersionEx(VersionInfo);
  Result:='';
  with VersionInfo do
  begin
    case dwPlatformId of
      1:
        case dwMinorVersion of
   0: Result:='Windows 95';
          10: Result:='Windows 98';
          90: Result:='Windows Me';
        end;
      2:
        case dwMajorVersion of
          3: Result:='Windows NT 3.51';
          4: Result:='Windows NT 4.0';
          5:
            case dwMinorVersion of
              0: Result:='Windows 2000';
              1: Result:='Windows XP';
            end;
        end;
    end;
  end;
  if (Result='') then
    Result:='Sistema operacional desconhecido.';
end;
// EXEMPLO DE UTILIZAÃO
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(WinVersion);
end;

 
Vocês devem ter notado que não existe nada sobre o Windows 3.1, e resolvi não incluí-lo mesmo, pois tal informaão é totalmente relevante, tendo esta versão do Windows como espécie para museus. Apesar que, deixo a disposião outro link para o site da Microsoft que aborda esta informaão(também em inglês): http://support.microsoft.com/kb/92936/
 
 
Diego de Queiroz Macedo
Estudante de Ciência da Computaão
 
Dúvidas
queiroz.diego@gmail.com

Publicidade

Vote no artigo




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes do artigo

Categoria: Windows
Adicionado dia: 17/10/05
Por: Diego De Queiroz Macedo
Visualizado: 22271 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009