Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 05.12.2007, 15:53   #1
lvv12000
Новичок
Джуниор
 
Регистрация: 05.12.2007
Сообщений: 2
Восклицание Как узнать заряд батареи ноута?

Может кто знает как в Винде раскопать информацию о текущем заряде батареи ноутбука?..
lvv12000 вне форума
Старый 05.12.2007, 17:02   #2
lvv12000
Новичок
Джуниор
 
Регистрация: 05.12.2007
Сообщений: 2
По умолчанию

ВОПРОС СНЯТ!
Виноват - сам слепой...
Все очень просто:
----------------------------------------------------
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;
----------------------------------------------------

У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор

Последний раз редактировалось mihali4; 22.11.2010 в 19:18.
lvv12000 вне форума
Старый 27.07.2009, 13:38   #3
imtec
Новичок
Джуниор
 
Регистрация: 19.01.2008
Сообщений: 1
По умолчанию

кто-нибудь знает как получить дополнительную информацию о батарее? емкость батареи и т. д.
imtec вне форума
Старый 18.04.2010, 11:45   #4
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию

http://www.delphilab.ru/content/view/287/1/

Код:
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.
theYozh вне форума
Старый 22.11.2010, 18:52   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Тупо скопировал этот код и откомпилировал (для проверки работоспособности).
Так вот, у меня на Win7x64 данные сами не обновляются в проге (может я что-нибудь прописать забыл?).

Одна тема - один вопрос.
Вопрос в чужой теме - оффтоп.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось mihali4; 22.11.2010 в 19:19.
BDA вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать IP Черничный Работа с сетью в Delphi 5 11.08.2008 20:36
НоутБук, Зарядка батареи subsonic Win Api 3 14.01.2008 13:05
Узнать настройки GMT Diogo Общие вопросы Delphi 7 18.08.2007 13:05
Как узнать IP адрес? AidarBik Работа с сетью в Delphi 2 11.07.2007 12:37