Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Определение операционной системы (http://forum.oszone.net/showthread.php?t=29631)

unreliable 27-06-2004 16:07 205024

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

Surround 27-06-2004 16:30 205025

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 205026

Surround
еще есть Win NT 5.2 (Windows 2003 Server).
а так вполне нормальный (:up:)  с виду код

Surround 27-06-2004 19:15 205027

bgg0408
ну на Win2003 пока не учел... :biggrin:
кстати как 2003-я все еще сырая такая же?:gigi:

bgg0408 27-06-2004 23:29 205028

Surround
ИМХО, 2003 лучше ХР будет.... Даже для дома. На оверклокерах даже увеличение скорости заметили при таком переходе...


Surround 28-06-2004 06:52 205029

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

hasherfrog 28-06-2004 13:47 205030

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

unreliable 28-06-2004 16:06 205031

hasherfrog
ссылка не пашет!

hasherfrog 28-06-2004 16:10 205032

unreliable
Ссылка работает только у тех, у кого установлен PSDK. Это локальная ссылка. на самом-то деле.

unreliable 28-06-2004 16:10 205033

http://www.delphipraxis.net/topic746...ermitteln.html - это хоть и на немецком, зато пахает.

hasherfrog 28-06-2004 16:19 205034

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


Время: 05:00.

Время: 05:00.
© OSzone.net 2001-