Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как определить версию Windows


Hermit ©   (2003-06-25 19:40:00) 

Как ТОЧНО определить версию Windows (Win 95, Win 95 OSR, Win 98, Win 98 SE и т.д.) ???
Чтение данных о версии из реестра не предлагать !!!


Hermit   (2003-06-29 00:57:00) [1]

Ну я же написал, что FAQ посмотрел, на microsoft.com сходил и всё понял ;-).
Сделал почти так же как DVM.
Всем большое спасибо !!!


Wizard_Ex   (2003-06-26 18:13:00) [2]

procedure ShowSystemPlatform;
var data:OSVERSIONINFO;
Winda:string;
begin
data.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(data);
Winda:="Windows ??";
case data.dwPlatformId of
VER_PLATFORM_WIN32s:Winda:="Windows 3.11";
VER_PLATFORM_WIN32_WINDOWS:
begin
if data.dwMajorVersion>=4 then
begin
if data.dwMinorVersion<10 then Winda:="Windows 95 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;
if data.dwMinorVersion>=10 then
if data.szCSDVersion[1]="A" then
Winda:="Windows 98 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+
" SE"+" (Build "+IntToStr(data.dwBuildNumber)+")"
else
Winda:="Windows 98 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;

if data.dwMinorVersion>=90 then Winda:="Windows ME "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;
end;
end;
VER_PLATFORM_WIN32_NT:
begin
if data.dwMajorVersion<=4 then Winda:="Windows NT "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;;
if data.dwMajorVersion=5 then
begin
if data.dwMinorVersion=0 then Winda:="Windows 2000 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;;
if data.dwMinorVersion>=1 then Winda:="Windows XP "+
inttostr(data.dwMajorVersion)+"."+
( data.dwMinorVersion)

procedure ShowSystemPlatform;
var data:OSVERSIONINFO;
Winda:string;
begin
data.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(data);
Winda:="Windows ??";
case data.dwPlatformId of
VER_PLATFORM_WIN32s:Winda:="Windows 3.11";
VER_PLATFORM_WIN32_WINDOWS:
begin
if data.dwMajorVersion>=4 then
begin
if data.dwMinorVersion<10 then Winda:="Windows 95 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;
if data.dwMinorVersion>=10 then
if data.szCSDVersion[1]="A" then
Winda:="Windows 98 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+
" SE"+" (Build "+IntToStr(data.dwBuildNumber)+")"
else
Winda:="Windows 98 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;

if data.dwMinorVersion>=90 then Winda:="Windows ME "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;
end;
end;
VER_PLATFORM_WIN32_NT:
begin
if data.dwMajorVersion<=4 then Winda:="Windows NT "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;;
if data.dwMajorVersion=5 then
begin
if data.dwMinorVersion=0 then Winda:="Windows 2000 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;;
if data.dwMinorVersion>=1 then Winda:="Windows XP "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+" (Build "+IntToStr(data.dwBuildNumber)+") "+
data.szCSDVersion;;
end;
end;
end;
OS.Caption:=Winda;
end;


DVM   (2003-06-26 12:14:00) [3]

type

TOsVersion = (OsUnknown, OsWin95, OsWin95OSR2, OsWin98, OsWin98SE, OsWinME,
OsWinNT31, OsWinNT35, OsWinNT351, OsWinNT4, OsWin2000, OsWinXP);

function GetOSVersion: TOSVersion;
var
OsVerInfo: TOSVersionInfo;
MajorVer, MinorVer: Integer;
begin
Result := OsUnknown; // Неизвестная версия ОС
OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
begin
MajorVer := OsVerInfo.dwMajorVersion;
MinorVer := OsVerInfo.dwMinorVersion;
case OsVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT: // семейство NT
case MajorVer of
3: case MinorVer of
1: Result := OsWinNT31; // Windows NT 3.1
5: Result := OsWinNT35; // Windows NT 3.5
51: Result := OsWinNT351; // Windows NT 3.51
end;
4: Result := OsWinNT4; // Windows NT 4.0
5: case MinorVer of
0: Result := OsWin2000; // Windows 2000
1: Result := OsWinXP; // Windows XP
end;
end;
VER_PLATFORM_WIN32_WINDOWS: // семейство Windows 9x/ME
begin
if MajorVer <> 4 then exit;
case MinorVer of
0..9: if OsVerInfo.szCSDVersion[1] = "B" then Result := OsWin95OSR2 // Windows 95 OSR2 (4.00.950B)
else Result := OsWin95; // Windows 95 (4.00.950)

10..89: if OsVerInfo.szCSDVersion[1] = "A" then
Result := OsWin98SE // Windows 98SE (4.10.2222A)
else
Result := OsWin98; // Windows 98 (4.10.1998)
90: Result := OsWinME; ( 4.90.3000)

type

TOsVersion = (OsUnknown, OsWin95, OsWin95OSR2, OsWin98, OsWin98SE, OsWinME,
OsWinNT31, OsWinNT35, OsWinNT351, OsWinNT4, OsWin2000, OsWinXP);

function GetOSVersion: TOSVersion;
var
OsVerInfo: TOSVersionInfo;
MajorVer, MinorVer: Integer;
begin
Result := OsUnknown; // Неизвестная версия ОС
OsVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);
if GetVersionEx(osVerInfo) then
begin
MajorVer := OsVerInfo.dwMajorVersion;
MinorVer := OsVerInfo.dwMinorVersion;
case OsVerInfo.dwPlatformId of
VER_PLATFORM_WIN32_NT: // семейство NT
case MajorVer of
3: case MinorVer of
1: Result := OsWinNT31; // Windows NT 3.1
5: Result := OsWinNT35; // Windows NT 3.5
51: Result := OsWinNT351; // Windows NT 3.51
end;
4: Result := OsWinNT4; // Windows NT 4.0
5: case MinorVer of
0: Result := OsWin2000; // Windows 2000
1: Result := OsWinXP; // Windows XP
end;
end;
VER_PLATFORM_WIN32_WINDOWS: // семейство Windows 9x/ME
begin
if MajorVer <> 4 then exit;
case MinorVer of
0..9: if OsVerInfo.szCSDVersion[1] = "B" then Result := OsWin95OSR2 // Windows 95 OSR2 (4.00.950B)
else Result := OsWin95; // Windows 95 (4.00.950)

10..89: if OsVerInfo.szCSDVersion[1] = "A" then
Result := OsWin98SE // Windows 98SE (4.10.2222A)
else
Result := OsWin98; // Windows 98 (4.10.1998)
90: Result := OsWinME; // Windows ME (4.90.3000)
end;
end;
end;
end;
end;


Song   (2003-06-25 21:45:00) [4]

http://delphibase.endimus.com/?action=viewfunc&topic=sysparams&id=10002


Hermit   (2003-06-25 20:20:00) [5]

Sorry за ламерский вопрос, уже FAQ посмотрел !!!


Song   (2003-06-25 19:51:00) [6]

GetVersionEx() ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо