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

Листинг 7.4.

Определение имени пользователя

function UserName: String;

var

buffer: String;

len: Cardinal;

begin

len := 100; //Увы, но константы UNLEN в модуле Windows найти

//не удалось. Буфера такой длины должно хватить

SetLength(buffer, len);

if GetUserName(PAnsiChar(buffer), len)

<> False then

UserName := Copy(buffer, 1, len)

else

UserName := \'\

end;

Чаще всего приведенная в листинге 7.4 функция определяет пользователя, выполнившего вход в систему. Но если приложение запущено от имени другого пользователя (например, User при вошедшем пользователе Admin), то, соответственно, определяется имя пользователя User.

Состояние системы питания компьютера

Следующий пример является интересным для обладателей компьютеров с резервным источником питания (батарея в ноутбуке или источник бесперебойного питания).

Для определения состояния системы питания компьютера используется API-функция GetSystemPowerStatus. Она заполняет структуру TSystemPowerStatus и в случае успеха возвращает ненулевое значение. Упомянутая структура имеет следующие поля:

...

TSystemPowerStatus = packed record

ACLineStatus : Byte; //Подключение к сети

//переменного тока

BatteryFlag : Byte; //Состояние батареи

//(уровень заряда и прочее)

BatteryLifePercent : Byte; //Оставшийся ресурс батареи (в %)

Reserved1 : Byte;

BatteryLifeTime : DWORD; //Оставшееся время (в сек.)

//работы батареи

BatteryFullLifeTime : DWORD; //Полное время (в сек.)

//работы батареи

end;

Если значения полей BatteryLifePercent, BatteryLif eTime, BatteryFull-Lif eTime предельно ясны, то извлечение информации из полей ACLineStatus и BatteryFlag можно посмотреть в листинге 7.5.

...

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

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

Забытое
Забытое

Захватывающая история Сиенны Престон продолжается во второй части головокружительной серии «Игра обмана».Семнадцатилетняя Сиенна не понаслышке знает о душевной боли и потерях. Но на этот раз всё по-другому: кто-то вмешался в воспоминания её возлюбленного, и теперь ей предстоит найти ответы.След ведёт её к сверкающим небоскрёбам и роскоши Рубекса, столицы Пасифики, где она проникает в правительственное Ведомство интеллекта и генетики. Но ответы получить не так-то просто, особенно когда её собственные воспоминания могут быть искажены. К счастью, рядом есть Зейн Райдер, готовый помочь ей сложить вместе кусочки головоломки. Его преданность и забота размывают границу между дружбой и чем-то большим.Когда Сиенна подбирается слишком близко к тёмным секретам Ведомства, её обвиняют в убийстве видного государственного деятеля, и ей приходится пуститься в бега. Как бы ни разрывалось сердце Сиенны в попытке понять, кого она любит, это всё вскоре перестаёт иметь значение — потому что единственное, что её сейчас ждёт, это смертный приговор.

Марина Козикова , Александр Степанович Грин , Марина Суржевская , Кристин Смит

Любовное фэнтези, любовно-фантастические романы / Проза / Классическая проза / Самиздат, сетевая литература / Технические науки / Любовно-фантастические романы