Пятница
18.07.2025, 22:35
xcodemaster projects
Приветствую Вас Гость | RSS
Главная Каталог статей Регистрация Вход
Меню сайта

Категории раздела
Cтатьи по delphi [3]

Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Cтатьи по delphi

Определение типа установленной операционной системы(delphi)
//пример if WhatWindowsIsInstalled = 'Windows Seven' then ...

unit whatos;

interface

uses
  Windows;

const
  VER_NT_WORKSTATION = 0;
  VER_NT_DOMAIN_CONTROLLER = 1;
  VER_NT_SERVER = 2;

  VER_SUITE_SMALLBUSINESS = 1;
  VER_SUITE_ENTERPRISE = 2;
  VER_SUITE_BACKOFFICE = 4;
  VER_SUITE_COMMUNICATIONS = 8;
  VER_SUITE_TERMINAL = $10;
  VER_SUITE_SMALLBUSINESS_RESTRICTED = $20;
  VER_SUITE_EMBEDDEDNT = $40;
  VER_SUITE_DATACENTER = $80;
  VER_SUITE_SINGLEUSERTS = $100;
  VER_SUITE_PERSONAL = $200;
  VER_SUITE_BLADE = $400;

type
  TOsVersionInfoExA = packed record
    old: TOsVersionInfoA;
    wServicePackMajor: Word;
    wServicePackMinor: Word;
    {
     wSuiteMask
     Набор битовых флагов, определяющих компоненты Windows
     VER_SUITE_BACKOFFICE Установлен компонент Microsoft BackOffice.
     VER_SUITE_BLADE Установлен компонент Windows .NET Web Server.
     VER_SUITE_DATACENTER Установлена Windows 2000 или компонент Windows .NET
       Datacenter Server
     VER_SUITE_ENTERPRISE Установлена Windows 2000 Advanced Server или компонент
       Windows .NET Enterprise Server.
     VER_SUITE_PERSONAL Установлена Windows XP Home Edition.
     VER_SUITE_SMALLBUSINESS Установлен Microsoft Small Business Server.
     VER_SUITE_SMALLBUSINESS_RESTRICTED Установлен Microsoft Small Business
       Server с ограничительной лицензией для клиентов
     VER_SUITE_TERMINAL Установлен компонент Terminal Services.
    }

    wSuiteMask: Word;
    {wProductType
    Дополнительная информация о типе операционной системы
    VER_NT_WORKSTATION Операционная система Windows NT 4.0 Workstation,
                                            Windows 2000 Professional,
                                            Windows XP Home Edition, или
                                            Windows XP Professional.
    VER_NT_DOMAIN_CONTROLLER Операционная система является контроллером домена.
    VER_NT_SERVER Операционная система является сервером.
    }

    wProductType: Byte;
    wReserved: Byte;
  end;

  function WhatWindowsIsInstalled: string; overload;
  function WhatWindowsIsInstalled(var Major:integer; var Minor:integer): string; overload;

implementation

{ Определение типа установленной операционной системы }

function WhatWindowsIsInstalled: string;
var
  VerInfo: TOsVersionInfoExA;
begin
  FillChar(VerInfo, sizeof(VerInfo), 0);
  VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoExA);
  if not GetVersionExA(VerInfo.old) then
  begin
    VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoA);
    GetVersionExA(VerInfo.old);
  end;
  case VerInfo.old.dwPlatformId of
    VER_PLATFORM_WIN32_WINDOWS:
      if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwBuildNumber = 950) then
        Result := 'Windows 95' //windows 95

      else if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwMinorVersion = 10) and
        (Verinfo.old.dwBuildNumber = 1998) then
        Result := 'Windows 98'  //Windows 98
      else if (Verinfo.old.dwMinorVersion = 90) then
        Result := 'Windows Me';   //Windows Me
    VER_PLATFORM_WIN32_NT:
      case Verinfo.old.dwMajorVersion of
        3: Result := 'Windows NT 3.51';  //Windows NT 3.51
        4: Result := 'Windows NT 4.0';   //Windows NT 4.0
        5: if Verinfo.old.dwMinorVersion = 0 then
            Result := 'Windows 2000'    //Windows 2000
           else if Verinfo.old.dwMinorVersion = 1 then
            Result := 'Windows XP'   //Windows XP
           else if Verinfo.old.dwMinorVersion = 2 then
            Result := 'Windows XP 64bit'; //Windows XP 64bit
        6: if Verinfo.old.dwMinorVersion = 0 then
            Result := 'Windows Vista'  //Windows Vista
           else if Verinfo.old.dwMinorVersion = 1 then
            Result := 'Windows Seven'; //Windows Seven
        end;
    VER_PLATFORM_WIN32s:
      case Verinfo.old.dwMajorVersion of
        5: if Verinfo.old.dwMinorVersion = 2 then
            Result := 'Windows Server 2003';  //Windows Server 2003
        6: if Verinfo.old.dwMinorVersion = 0 then
            Result := 'Windows Server 2008'  //Windows Server 2008
           else if Verinfo.old.dwMinorVersion = 1 then
            Result := 'Windows Server 2008 R2'; //Windows Server 2008 R2
      end;
  end;
end;

function WhatWindowsIsInstalled(var Major:integer; var Minor:integer): string; overload;
var
  VerInfo: TOsVersionInfoExA;
begin
  FillChar(VerInfo, sizeof(VerInfo), 0);
  VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoExA);
  if not GetVersionExA(VerInfo.old) then
  begin
    VerInfo.old.dwOSVersionInfoSize := Sizeof(TOsVersionInfoA);
    GetVersionExA(VerInfo.old);
  end;
  case VerInfo.old.dwPlatformId of
    VER_PLATFORM_WIN32_WINDOWS:
      if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwBuildNumber = 950) then
        Result := 'Windows 95'  //Windows 95
      else if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwMinorVersion = 10) and
        (Verinfo.old.dwBuildNumber = 1998) then
        Result := 'Windows 98' //Windows 98
      else if (Verinfo.old.dwMinorVersion = 90) then
        Result := 'Windows Me'; //Windows Me
    VER_PLATFORM_WIN32_NT:
      case Verinfo.old.dwMajorVersion of
        3: Result := 'Windows NT 3.51'; //Windows NT 3.51
        4: Result := 'Windows NT 4.0'; //Windows NT 4.0
        5: if Verinfo.old.dwMinorVersion = 0 then
            Result := 'Windows 2000' //Windows 2000
           else if Verinfo.old.dwMinorVersion = 1 then
            Result := 'Windows XP'  //Windows XP
           else if Verinfo.old.dwMinorVersion = 2 then
            Result := 'Windows XP 64bit'; //Windows XP 64bit
        6: if Verinfo.old.dwMinorVersion = 0 then
            Result := 'Windows Vista' //Windows Vista
           else if Verinfo.old.dwMinorVersion = 1 then
            Result := 'Windows Seven'; //Windows Seven
        end;
    VER_PLATFORM_WIN32s:
      case Verinfo.old.dwMajorVersion of
        5: if Verinfo.old.dwMinorVersion = 2 then
            Result := 'Windows Server 2003'; //Windows Server 2003
        6: if Verinfo.old.dwMinorVersion = 0 then
            Result := 'Windows Server 2008'  //Windows Server 2008
           else if Verinfo.old.dwMinorVersion = 1 then
            Result := 'Windows Server 2008 R2'; //Windows Server 2008 R2
      end;
  end;
  Major:=Verinfo.old.dwMajorVersion;
  Minor:=Verinfo.old.dwMinorVersion;
 end;

end.
Категория: Cтатьи по delphi | Добавил: xcodemaster (05.01.2012)
Просмотров: 1915 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
MP3 Плеер

Мини-чат
200

Поиск


xcodemaster © 2025