Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Как определить 95,98,NT,ME,2000 или Win XP стоит на компьютере?   Найти похожие ветки 

 
Сергей Ф ©   (2002-04-27 20:58) [0]

Здравствуйте! Понимаю, что я не первый, кто столкнулся с данной проблемой, поэтому очень долго пытался найти ответ на данном сайте. Теперь вот пишу в форум. Дело в том, что мне нужно менять панель настроек моей программы в зависимости от того, какая Winows установлена на компьютере: 95, 98, ME, 2000 или XP. Подскажите лучше, как это определить.


 
Pat ©   (2002-04-27 21:02) [1]


procedure TForm1.FormCreate(Sender: TObject);
var data:OSVERSIONINFO;
Winda:string;
begin
data.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(data);
Winda:="Unknown";
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)+
data.szCSDVersion;
if data.dwMinorVersion>=10 then
if data.szCSDVersion[1]="A" then
Winda:="Windows 98 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+
" SE"
else
Winda:="Windows 98 "+
inttostr(data.dwMajorVersion)+"."+
inttostr(data.dwMinorVersion)+
data.szCSDVersion;

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

end;
messagebox(handle,pchar(Winda),"OS",0);
application.showmainform:=false;
application.Terminate;
end;


 
Сергей Ф ©   (2002-04-28 08:31) [2]

To Pat:
Спасибо, попробую.


 
Севостьянов Игорь ©   (2002-04-29 12:15) [3]

Можно и так:

function GetWindowsOS: String;
var
OsVersionInfo: TOsVersionInfo;
begin
Result := "";
OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
if GetVersionEx(OSVersionInfo) then
Case OSVersionInfo.dwPlatformId Of
0: Result := "Windows 3.1";
1: Result := "Windows"; // Windows 9x
2: Result := "Windows NT";
end;
end;


 
Bober   (2002-05-01 12:19) [4]

А можно и так
function GettingWinVer: string; //Win95 or later and NT3.5 or later
var
temp1,
temp2,
temp3: integer;
osvi: OSVERSIONINFO;
begin
osvi.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO);
GetVersionEx(osvi);
temp1:=osvi.dwMajorVersion;
temp2:=osvi.dwMinorVersion;
temp3:=osvi.dwPlatformId;
if temp1=4 then
begin
if temp2=0 then
begin
if temp3=VER_PLATFORM_WIN32_WINDOWS then
Result:="Windows 95";
end;
end;
if temp1=4 then
begin
if temp2=10 then
Result:="Windows 98";
end;
if temp1=4 then
begin
if temp2=90 then
Result:="Windows Me";
end;
if temp1=3 then
begin
if temp2=51 then
Result:="Windows NT 3.51";
end;
if temp1=4 then
begin
if temp2=0 then
Result:="Windows NT 4.0";
end;
if temp1=5 then
begin
if temp2=0 then
Result:="Windows 2000";
end;
if temp1=5 then
begin
if temp2=1 then
Result:="Whistler XP";
end;
end;


 
Mambo ©   (2002-05-07 12:47) [5]

Можно просто выбирать инфу из реестра


 
Вадим02   (2002-05-13 03:27) [6]

Если нужно просто определить NT-образная система или как
говорит Джеффри Рихтер "народная" т.е. Win95/98/Me, то
зачем такие сложности господа ? Вполне достаточно :

if (GetVersion() and $80000000)<>0 then
MainForm.Caption:="OS Windows 95/98 "
else
MainForm.Caption:="OS Windows NT/2000/XP";
end;


 
easy   (2002-05-13 11:36) [7]

function GetWindowsVersion():byte;
var
osv : TOSVersionInfo;
begin
osv.dwOSVersionInfoSize:=sizeOf(osv);
GetVersionEx(osv);
if osv.dwPlatformId=VER_PLATFORM_WIN32_NT then
begin
if osv.dwMajorVersion=3 then if osv.dwMinorVersion=51 then result:=1; //NT 3.51
if osv.dwMajorVersion=4 then if osv.dwMinorVersion=0 then result:=2; //NT 4.0
if osv.dwMajorVersion=5 then if osv.dwMinorVersion=0 then result:=3; //Win2000
if osv.dwMajorVersion=5 then if osv.dwMinorVersion=1 then result:=4; //Win XP
end;
if osv.dwPlatformId=VER_PLATFORM_WIN32s then result:=0; //Win 3.1
if osv.dwPlatformId=VER_PLATFORM_WIN32_WINDOWS then result:=5; //Win9x

end;


 
Сергей Ф ©   (2002-05-13 20:07) [8]

Большое спасибо всем ответившим. Но мне нужно было именно узнать Windows ME/2000/XP. Поэтому special thanks to:
Pat и Bober.

2 Mambo:
Зачем брать инфу из реестра, если есть стандартная функция?



Страницы: 1 вся ветка

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-95439
Kisss
2002-07-15 16:25
2002.07.29
Какая самая последняя версия библиотеки Rx?


3-95260
ALex_Aby
2002-07-07 14:10
2002.07.29
Ищу компанент для доступа к данным без BDE ADO


1-95361
Skywalker
2002-07-15 17:43
2002.07.29
Форма


14-95553
SPeller
2002-07-04 04:43
2002.07.29
Где есть DelphiX для Дельфи 6 ??


1-95274
AFROLOV
2002-07-15 13:18
2002.07.29
Передача параметра по ссылке