Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 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.47 MB
Время: 0.007 c
1-95331
Ich Hasse
2002-07-16 00:29
2002.07.29
Поиск пути


1-95301
RV
2002-07-16 11:01
2002.07.29
консольное окно, взять информацию


1-95396
antoniz
2002-07-16 10:13
2002.07.29
Как узнать координату символа в пикселях в TRichEdit


1-95308
Cosinus
2002-07-15 17:10
2002.07.29
Не подскажите, как сделать так, чтобы после компиляции программы


1-95444
donda
2002-07-16 00:02
2002.07.29
MDI в DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский