PDA

Показать полную графическую версию : Определение операционной системы


unreliable
27-06-2004, 16:07
Как в delphi или C++ Builder узнать какая операционная система установлена. Приведите пожалуйста програмный код. С уважением, unreliable.

Surround
27-06-2004, 16:30
unreliable
через WinAPI можно так:

Type TOSVersion=(osUnknown, osUnknown9x, osUnknownNT, osWin95, osWin98, osWin98SE, osWinME, osWinNT, osWin2000, osXP);
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 : *
*Case majorVer of *
*4:result := OsWinNT; *
*5:if minorVer=0 then result := OsWin2000 *
*else * *
*if minorVer=1 then result := OsXP else result := osUnknownNT; *
*else result := osUnknownNT; *
*end; {Case majorVer of} *
*
*VER_PLATFORM_WIN32_WINDOWS : *
*case majorVer of *
*4: Case minorVer of *
*0:result := OsWin95; *
*10: if osVerInfo.szCSDVersion[1] = 'A' then result := OsWin98SE else result := OsWin98; *
*90: result := OsWinME; *
*else result := osUnknown9x; * *
*end;{Case minorVer of} * *
*else result := osUnknown9x; * *
*end{case majorVer of} *
*else result := OsUnknown; *
*end;{case osVerInfo.dwPlatformId of} *
*end;{if GetVersionEx(osVerInfo) then} *
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
*case GetOSVersion of *
*osUnknown: Showmessage('Unknown'); *
*osWin95: Showmessage('Win95'); *
*osWin98: Showmessage('Win98'); *
*osWin98SE: Showmessage('Win98SE'); *
*osWinME: Showmessage('WinME'); *
*osWinNT: Showmessage('WinNT'); *
*osWin2000: Showmessage('Win2000'); *
*osXP: Showmessage('XP'); *
*end; *
end;

:biglaugh:

bgg0408
27-06-2004, 18:38
Surround
еще есть Win NT 5.2 (Windows 2003 Server).
а так вполне нормальный (:up:)  с виду код

Surround
27-06-2004, 19:15
bgg0408
ну на Win2003 пока не учел... :biggrin:
кстати как 2003-я все еще сырая такая же?:gigi:

bgg0408
27-06-2004, 23:29
Surround
ИМХО, 2003 лучше ХР будет.... Даже для дома. На оверклокерах (http://forums.overclockers.ru/) даже увеличение скорости заметили при таком переходе...

Surround
28-06-2004, 06:52
bgg0408
возможно, но когда я себе ее ставил, только при появлении, еще сыровата была... а так вещсь стоящая :biggrin:

hasherfrog
28-06-2004, 13:47
Самое полное определение операционной системы приведено в PSDK. Я не буду давать листинг, очень много кода. Определяет всё, вплоть до наличия SP1 в XP.
См. ms-help://MS.PSDK.1033/sysinfo/base/getting_the_system_version.htm

unreliable
28-06-2004, 16:06
hasherfrog
ссылка не пашет!

hasherfrog
28-06-2004, 16:10
unreliable
Ссылка работает только у тех, у кого установлен PSDK. Это локальная ссылка. на самом-то деле.

unreliable
28-06-2004, 16:10
http://www.delphipraxis.net/topic7463_windowsversion+ermitteln.html - это хоть и на немецком, зато пахает.

hasherfrog
28-06-2004, 16:19
unreliable
Второй пост - как раз переложенное на Delphi средство из PSDK.
Очень хорошо, что не пришлось выкладывать здесь весь код :)




© OSzone.net 2001-2012