Форум: "Система";
Текущий архив: 2002.07.29;
Скачать: [xml.tar.bz2];
ВнизКак определить 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c