Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Определение операционной системы [D5, WinXP]


QuickFinder ©   (2006-05-10 13:48:00) 

Как средствами Delphi определить операционную систему на машине?
Точнее, как определить, что она - Windows XP или выше.
Спасибо.


mctarik   (2006-05-10 19:15:00) [1]

Пользуйтесь на Здоровье!

/Функция определения Версии ОС---------------------------------------------//

function TIntefase.GetOSVer: string;
var
 OSVersionInfo: TOSVersionInfo;
begin
 VersionOS.Caption := 'Unknown';
 OSVersionInfo.dwOSVersionInfoSize := sizeof(TOSVersionInfo);
 if GetVersionEx(OSVersionInfo) then
 begin
    Label.Caption := Format('%d.%d (Build %d: %s)',{Реализация вызова}
     [OSVersionInfo.dwMajorVersion,
     OSVersionInfo.dwMinorVersion, (OSVersionInfo.dwBuildNumber and $FFFF),
       OSVersionInfo.szCSDVersion]);
   case OSVersionInfo.DwMajorVersion of
     3: VersionOS.Caption := 'Windows NT3';
     4: case OSVersionInfo.DwMinorVersion of
         0: if OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT then
             VersionOS.Caption := 'Windows NT4'
           else
             VersionOS.Caption := 'Windows 95';
         10: VersionOS.Caption := 'Windows 98';
         90: VersionOS.Caption := 'Windows ME';
       end;
     5: case OSVersionInfo.DwMinorVersion of
         0: VersionOS.Caption := 'Windows W2K';
         1: VersionOS.Caption := 'Windows XP';
       end;
   end;
 end;
end;


Игорь Шевченко   (2006-05-10 15:41:00) [2]


> Точнее, как определить, что она - Windows XP или выше.

uses
 SysUtils;

 Result := (Win32Platform = VER_PLATFORM_WIN32_NT) and
   ((Win32MajorVersion > 5) or
    ((Win32MajorVersion = 5) and (Win32MinorVersion > 0)) or
    ((Win32MajorVersion = 5) and
            (Win32MinorVersion = 0) and (Win32BuildNumber > 2195)));


begin...end   (2006-05-10 15:25:00) [3]

> Cash ©   (10.05.06 14:46) [3]

> ...и исходя из нее идти либо на...

А зачем ещё куда-то идти? Структура OSVERSIONINFO[EX] содержит, по-моему, вполне исчерпывающую информацию.


Cash   (2006-05-10 14:46:00) [4]

Вроде по GetVersion[Ex] надо бы узнать основу, чем эта ось является,
и исходя из нее идти либо на
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion для Win9x,
либо на
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion для WinNT
осей.
Вроде так.


Cashmare   (2006-05-10 14:23:00) [5]

Может, будет достаточно и WIN32PLATFORM


Сергей М.   (2006-05-10 13:49:00) [6]

см. GetVersion[Ex]


Наверх

Титульная страница Поиск, карта сайта Написать письмо