Читаем 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 (является битовой маской) может быть составлено из значений следующих констант (увы, но их объявления также пришлось добавить самостоятельно).

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

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

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных

Все жанры