Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
2nd
Дек
Как узнать информацию о батареи ноутбука?
Posted by Chas under Пост-обзор
procedure TForm1.Button1Click(Sender: TObject);
var
sps:_SYSTEM_POWER_STATUS;
begin
GetSystemPowerStatus(sps);
label1.Caption:=‘ACLineStatus — ‘ + inttostr(sps.ACLineStatus);
label2.Caption:=‘BatteryLifePercent — ‘ + inttostr(sps.BatteryLifePercent);
end;
var
sps:_SYSTEM_POWER_STATUS;
begin
GetSystemPowerStatus(sps);
label1.Caption:=‘ACLineStatus — ‘ + inttostr(sps.ACLineStatus);
label2.Caption:=‘BatteryLifePercent — ‘ + inttostr(sps.BatteryLifePercent);
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
procedure PowerStatusChange(var Message: TMessage); message WM_POWERBROADCAST;
procedure UpdateInfo(Info: TStrings);
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// При старте программы выводим текущую информацию
UpdateInfo(Memo1.Lines);
end;
procedure TForm1.PowerStatusChange(var Message: TMessage);
begin
// Пришло сообщение WM_POWERBROADCAST — нужно обновить информацию
Memo1.Clear;
UpdateInfo(Memo1.Lines);
end;
procedure TForm1.UpdateInfo(Info: TStrings);
// Получаем и выводим информацию о батарее в TStrings
var
st: TSystemPowerStatus;
s: string;
begin
GetSystemPowerStatus(st); // Получить информацию
case st.ACLineStatus of // текущее подключение
0: s := ‘от батареи’;
1: s := ‘от сети’;
else s := ‘не известно’;
end;
Info.Add(‘Питание’#9 + s);
case st.BatteryFlag of // Уровень заряда батареи
0: s := ‘нормальный’;
1: s := ‘высокий’; // >= 66%
2: s := ‘низкий’; // <= 33%
4: s := ‘критический’; // <=5%
8: s := ‘заряжается’;
128: s := ‘батарея отсутствует’;
else s := ‘нет информации’;
end;
Info.Add(‘Заряд батарей’#9 + s);
Info.Add(‘Уровень заряда’#9 + IntToStr(st.BatteryLifePercent) + ‘%’); // В %
if Integer(st.BatteryLifeTime) < 0 then s := ‘неизвестно’ // В секундах
else s := TimeToStr(st.BatteryLifeTime / SecsPerDay);
Info.Add(‘Время работы от батерей’#9 + s);
if Integer(st.BatteryFullLifeTime) = -1 then s := ‘неизвестно’ // Макс. время батареи
else s := TimeToStr(st.BatteryFullLifeTime / SecsPerDay);
Info.Add(‘Максимальное время работы’#9 + s);
end;
end.
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
procedure PowerStatusChange(var Message: TMessage); message WM_POWERBROADCAST;
procedure UpdateInfo(Info: TStrings);
end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// При старте программы выводим текущую информацию
UpdateInfo(Memo1.Lines);
end;
procedure TForm1.PowerStatusChange(var Message: TMessage);
begin
// Пришло сообщение WM_POWERBROADCAST — нужно обновить информацию
Memo1.Clear;
UpdateInfo(Memo1.Lines);
end;
procedure TForm1.UpdateInfo(Info: TStrings);
// Получаем и выводим информацию о батарее в TStrings
var
st: TSystemPowerStatus;
s: string;
begin
GetSystemPowerStatus(st); // Получить информацию
case st.ACLineStatus of // текущее подключение
0: s := ‘от батареи’;
1: s := ‘от сети’;
else s := ‘не известно’;
end;
Info.Add(‘Питание’#9 + s);
case st.BatteryFlag of // Уровень заряда батареи
0: s := ‘нормальный’;
1: s := ‘высокий’; // >= 66%
2: s := ‘низкий’; // <= 33%
4: s := ‘критический’; // <=5%
8: s := ‘заряжается’;
128: s := ‘батарея отсутствует’;
else s := ‘нет информации’;
end;
Info.Add(‘Заряд батарей’#9 + s);
Info.Add(‘Уровень заряда’#9 + IntToStr(st.BatteryLifePercent) + ‘%’); // В %
if Integer(st.BatteryLifeTime) < 0 then s := ‘неизвестно’ // В секундах
else s := TimeToStr(st.BatteryLifeTime / SecsPerDay);
Info.Add(‘Время работы от батерей’#9 + s);
if Integer(st.BatteryFullLifeTime) = -1 then s := ‘неизвестно’ // Макс. время батареи
else s := TimeToStr(st.BatteryFullLifeTime / SecsPerDay);
Info.Add(‘Максимальное время работы’#9 + s);
end;
end.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)