Читаем Delphi. Трюки и эффекты полностью

Не будем вдаваться в подробное описание возможных значений полей этой структуры: практически все будет ясно из приведенного далее примера. Напомним лишь, чтобы вы не забывали заполнять поле dwOSVersionInf oSize перед вызовом функции GetVersionEx.

Итак, пример обработки данных, помещаемых в структуру OSVERSIONINFO, приведен в листинге 7.1. При загрузке формы элемент управления ListView с именем lvwVerlnf о заполняется сведениями о версии системы, представленными в читабельной форме.

...

Листинг 7.1.

Получение и отображение сведений о Windows

procedure TForm1.FormCreate(Sender: TObject);

var

info: OSVERSIONINFO;

item: TListItem;

begin

//Получаем информацию о версии ОС

info.dwOSVersionInfoSize := SizeOf(info);

GetVersionEx(info);

//Заполняем список информацией о ОС

//..версия ОС

item := lvwVerInfo.Items.Add;

item.Caption := \'Версия системы\

item.SubItems.Insert(0, IntToStr(Integer(info.dwMajorVersion)) +

\'.\' + IntToStr(Integer(info.dwMinorVersion)));

//..номер сборки

item := lvwVerInfo.Items.Add;

item.Caption := \'Сборка\

item.SubItems.Insert(0, IntToStr(Integer(info.dwBuildNumber)));

//..платформа

item := lvwVerInfo.Items.Add;

item.Caption := \'Платформа\

case info.dwPlatformId of

VER_PLATFORM_WIN32s:

//Эмуляция Win32 или Win16

item.SubItems.Insert(0, \'Win16\');

VER_PLATFORM_WIN32_WINDOWS:

//"Классическая" Win32: 95, 98 или Me

item.SubItems.Insert(0, \'Win32\');

VER_PLATFORM_WIN32_NT:

//Ядро NT

item.SubItems.Insert(0, \'WinNT\');

end;

//..дополнительная информация (например, пакет обновлений)

item := lvwVerInfo.Items.Add;

item.Caption := \'Дополнительные сведения\

item.SubItems.Insert(0, info.szCSDVersion);

end;

Возможный результат работы программы (для Windows ХР SP1) приводится на рис. 7.1.

Рис. 7.1. Информация о версии Windows

Теперь снова обратимся к функции GetVersionEx, точнее говоря, к структуре OSVERSIONINFOEX, которая может также передаваться в качестве параметра в функцию. К сожалению, в библиотеке Delphi 7 эта структура не объявлена. Но это можно сделать самостоятельно:

...

OSVERSIONINFOEX = record

dwOSVersionInfoSize: DWORD;

dwMajorVersion: DWORD;

dwMinorVersion: DWORD;

dwBuildNumber: DWORD;

dwPlatformId: DWORD;

szCSDVersion: array[0..127] of AnsiChar;

//Поля, которых нет в OSVERSIONINFO

wServicePackMajor: WORD; //Старшая цифра версии пакета

//обновлений

wServicePackMinor: WORD; //Младшая цифра версии пакета

//обновлений

wSuiteMask: WORD; //Комплектация системы

wProductType: BYTE; //Дополнительная информации об ОС

wReserved: BYTE;

end;

Дополнительные (по сравнению с OS VERS ION INFO) поля структуры может заполнить ОС Windows NT 4.0 SP6 и более поздние версии Windows NT (в том числе 2000 и ХР). Значения дополнительных полей структуры OSVERSIONINFOEX пояснены комментариями в объявлении структуры.

Значение поля wSuiteMask (является битовой маской) может быть составлено из значений следующих констант (увы, но их объявления также пришлось добавить самостоятельно).

...
Перейти на страницу:

Похожие книги

Компьютерные сети. 5-е издание
Компьютерные сети. 5-е издание

Перед вами — очередное, пятое издание самой авторитетной книги по современным сетевым технологиям, написанной признанным экспертом в этой области Эндрю Таненбаумом в соавторстве с профессором Вашингтонского университета Дэвидом Уэзероллом. Первая версия этого классического труда появилась на свет в далеком 1980 году, и с тех пор каждое издание книги неизменно становилось бестселлером и использовалось в качестве базового учебника в ведущих технических вузах. В книге последовательно изложены основные концепции, определяющие современное состояние и тенденции развития компьютерных сетей. Авторы подробнейшим образом объясняют устройство и принципы работы аппаратного и программного обеспечения, рассматривают все аспекты и уровни организации сетей — от физического до уровня прикладных программ. Изложение теоретических принципов дополняется яркими, показательными примерами функционирования Интернета и компьютерных сетей различного типа. Пятое издание полностью переработано с учетом изменений, происшедших в сфере сетевых технологий за последние годы и, в частности, освещает такие аспекты, как беспроводные сети стандарта 802.12 и 802.16, сети 3G, технология RFID, инфраструктура доставки контента CDN, пиринговые сети, потоковое вещание, интернет-телефония и многое другое.

А. Гребенькова , Джеймс Уэзеролл

Технические науки