Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Получение информации о типе и версии операционной системы

Автор: Игорь Шевченко
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Получение информации о типе и версии операционной системы

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

Зависимости: Windows
Автор:       Игорь Шевченко, whitefranz@hotmail.com, Москва
Copyright:   Игорь Шевченко
Дата:        26 апреля 2002 г.
***************************************************** }

unit HSWinFuncs;

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;

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'
      else if (Verinfo.old.dwMajorVersion = 4) and
        (Verinfo.old.dwMinorVersion = 10) and
        (Verinfo.old.dwBuildNumber = 1998) then
        Result := 'Windows 98'
      else if (Verinfo.old.dwMinorVersion = 90) then
        Result := 'Windows Me';
    VER_PLATFORM_WIN32_NT:
      if Verinfo.old.dwMajorVersion = 3 then
        Result := 'Windows NT 3.51'
      else if Verinfo.old.dwMajorVersion = 4 then
        Result := 'Windows NT 4.0'
      else if Verinfo.old.dwMajorVersion = 5 then
        if Verinfo.old.dwMinorVersion = 0 then
          Result := 'Windows 2000'
        else if Verinfo.old.dwMinorVersion = 1 then
          Result := 'Windows XP';
    VER_PLATFORM_WIN32s:
      Result := 'Win32s';
  end;
end;

end.

Пример использования:

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  WindowsTypeEdit.Text := WhatWindowsIsInstalled();
end;
Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay