![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как определить 95,98,NT,ME,2000 или Win XP стоит на компьютере? [D6, Win95/98, WinME, NT4, Win2k, WinXP]
Сергей Ф © (2002-04-27 20:58:00)Здравствуйте! Понимаю, что я не первый, кто столкнулся с данной проблемой, поэтому очень долго пытался найти ответ на данном сайте. Теперь вот пишу в форум. Дело в том, что мне нужно менять панель настроек моей программы в зависимости от того, какая Winows установлена на компьютере: 95, 98, ME, 2000 или XP. Подскажите лучше, как это определить.
Сергей Ф (2002-05-13 20:07:00) [1]Большое спасибо всем ответившим. Но мне нужно было именно узнать Windows ME/2000/XP. Поэтому special thanks to:
Patи Bober.
2 Mambo:
Зачем брать инфу из реестра, если есть стандартная функция?
easy (2002-05-13 11:36:00) [2]
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;
Вадим02 (2002-05-13 03:27:00) [3]Если нужно просто определить 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;
Mambo (2002-05-07 12:47:00) [4]Можно просто выбирать инфу из реестра
Bober (2002-05-01 12:19:00) [5]А можно и так
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;
Севостьянов Игорь (2002-04-29 12:15:00) [6]Можно и так:
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;
Сергей Ф (2002-04-28 08:31:00) [7]To Pat:
Спасибо, попробую.
Pat (2002-04-27 21:02:00) [8]
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;