PDA

Ver la Versión Completa : Averiguar en qué versión de Windows se ejecuta nuestro programa


dec
07-06-2006, 19:22:16
Con esta serie de funciones puede averiguarse la versión de Windows en la que nuestro programa se estuviera ejecutando:


function EsWindows95 : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion = 4)
and (OVI.dwMinorVersion = 0);
end;

function EsWindows98 : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion = 4)
and (OVI.dwMinorVersion = 10) and
not (OVI.szCSDVersion[1] = 'A');
end;

function EsWindows98SE : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion = 4)
and (OVI.dwMinorVersion = 10) and
(OVI.szCSDVersion[1] = 'A');
end;

function EsWindowsME : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion = 4)
and (OVI.dwMinorVersion = 90);
end;

function EsWindowsNT : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion < 4);
end;

function EsWindows2000 : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion = 5)
and (OVI.dwMinorVersion = 0);
end;

function EsWindowsXp : boolean;
var
OVI: TOSVersionInfo;
begin
Result := false;
OVI.dwOSVersionInfoSize:=
SizeOf(TOSVersionInfo);
if (GetVersionEx(OVI)) then
Result := (OVI.dwMajorVersion = 5)
and (OVI.dwMinorVersion = 1);
end;

Bicho
12-06-2006, 12:28:16
Yo tengo lo mismo pero sin tener que preguntar cada vez, si la versión es XP, es tal o cual, las dos funciones te devuelven la version de Windows que tengas

(*** Devuelve la versión de Windows **********)
function GetOSVersion : Integer;
var
osVerInfo : TOSVersionInfo;
majorVer, minorVer : Integer;
begin
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/XP } 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 := cOsWinXP
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;

(*** Devuelve el nombre de la versión de Windows **********)
function GetOSName( OSCode : Integer ) : String;
begin
if ( OSCode = cOsUnknown ) then Result := '(Desconocido)'
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 Segunda Edicion'
else if ( OSCode = cOsWinME ) then Result := 'Microsoft Windows Millennium Edition'
else if ( OSCode = cOsWinNT ) then Result := 'Microsoft Windows NT'
else if ( OSCode = cOsWin2000 ) then Result := 'Microsoft Windows 2000'
else if ( OSCode = cOsWinXP ) then Result := 'Microsoft Windows XP'
else Result := 'Microsoft Windows';
end;