Вверх ↑
Этот топик читают: Гость
Ответов: 355
Рейтинг: 2
#1: 2012-11-27 20:47:38 ЛС | профиль | цитата
Доброго времени суток.

Есть такой вопрос-хотелка: как можно определить средствами HiAsm подключен ли ПК к источнику питания, или работает от батареи? И, тогда уж, как получить процент заряда аккумулятора?
карма: 1

0
Ответов: 1528
Рейтинг: 57
#2: 2012-11-27 21:09:50 ЛС | профиль | цитата
WMI
карма: 0

0
Ответов: 5446
Рейтинг: 323
#3: 2012-11-27 21:12:29 ЛС | профиль | цитата
nickware, только через InlineCode. Вот кусок кода:
type
PSystemPowerStatus = ^TSystemPowerStatus;
_SYSTEM_POWER_STATUS = packed record
ACLineStatus : Byte;
BatteryFlag : Byte;
BatteryLifePercent : Byte;
Reserved1 : Byte;
BatteryLifeTime : DWORD;
BatteryFullLifeTime : DWORD;
end;
TSystemPowerStatus = _SYSTEM_POWER_STATUS;
SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS;

function GetSystemPowerStatus(var lpSystemPowerStatus: TSystemPowerStatus): BOOL; stdcall; external kernel32 name 'GetSystemPowerStatus';

Расшифровка полей:
ПолеЗначениеРасшифровка
ACLineStatus-Есть ли ток в розетке
_0Тока нет
_1Ток есть
_255"А фиг его знает"
BatteryFlag-Состояние батареи. Битовое поле (т.е. битовое-И одного или нескольких значений)
_0Заряжена менее чем на 66%, но более чем на 33%
_1Заряжена более чем на 66%
_2Заряжена менее чем на 33%
_4Заряжена менее чем на 5%
_8Заряжается
_128Нет системной батареи
_255"А фиг его знает"
BatteryLifePercent-Процент заряда батареи
_0-100Заряд батареи
_255"А фиг его знает"
Reserved1-Не используется - всегда ноль
BatteryLifeTime-Оставшееся время работы от батареи, секунд
BatteryFullLifeTime-Сколько (в теории) можно проработать от батареи, секунд

карма: 1

3
Голосовали:Tad, Ex_, Konst
Ответов: 355
Рейтинг: 2
#4: 2012-11-27 21:42:40 ЛС | профиль | цитата
iarspider, благодарю. Конечный код должен выглядеть примерно так:
unit HiAsmUnit;

interface

uses kol,Share,Debug;

type
PSystemPowerStatus = ^TSystemPowerStatus;
_SYSTEM_POWER_STATUS = packed record
ACLineStatus : Byte;
BatteryFlag : Byte;
BatteryLifePercent : Byte;
Reserved1 : Byte;
BatteryLifeTime : DWORD;
BatteryFullLifeTime : DWORD;
end;
TSystemPowerStatus = _SYSTEM_POWER_STATUS;
SYSTEM_POWER_STATUS = _SYSTEM_POWER_STATUS;

function GetSystemPowerStatus(var lpSystemPowerStatus: TSystemPowerStatus): BOOL; stdcall; external kernel32 name 'GetSystemPowerStatus';

implementation

end.


карма: 1

0
файлы: 1code_29618.txt [566B] [214]
Ответов: 8930
Рейтинг: 823
#5: 2012-11-27 21:52:52 ЛС | профиль | цитата
nickware, осталось doBatareya и onBatareya
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#6: 2012-11-27 22:03:05 ЛС | профиль | цитата
Леонид писал(а):
осталось doBatareya и onBatareya
А я бы расшифровал каждый параметр.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 355
Рейтинг: 2
#7: 2012-11-27 22:20:36 ЛС | профиль | цитата
Леонид, а по этому поводу не могли бы вы рассказать подробнее?
карма: 1

0
Ответов: 8930
Рейтинг: 823
#8: 2012-11-27 23:05:20 ЛС | профиль | цитата
nickware, поиск по форуму "IC"
А вот простенький пример для начала code_29619.txt
карма: 19

0
файлы: 1code_29619.txt [2.5KB] [231]
Ответов: 294
Рейтинг: 64
#9: 2012-11-27 23:24:32 ЛС | профиль | цитата
Порывшись в своей помойке, откопал пару компонент от Vlad.- по работе со статусами заряда/батареи с примером.
Ccылка:
http://forum.hiasm.com/forum_serv.php?q=56&id=3393

PowerStatus.ini:
[About]
Version=1.0
Author=vlad.-
Mail=vlad.-@list.ru

[Type]
Class=Element
Info=Уровень, статус и время работы аккумулятора или UPS
Tab=System

[Methods]
UpdateInfo=Получить информацию|1|0
*LineStatus=текущее подключение: 0=от батареи;1=от сети;-1=не известно.|3|1
*BatteryInfo=Уровень заряда батареи: 0=нормальный; 1=высокий >= 66%; 2=низкий <= 33%; 3=критический <=5%; 4=заряжается; 5=батарея отсутствует; -1=нет информации.|3|1
*BatteryPower=Уровень заряда в процентах.|3|1
*BatteryTimeWork=Время, оставшееся до разряда батареи.|3|2
*BatteryMaxTimeWork=Полное время работы от батареи.|3|2

карма: 0

0
Голосовали:Tad, Ex_
Ответов: 16884
Рейтинг: 1239
#10: 2012-11-27 23:46:39 ЛС | профиль | цитата
Quest писал(а):
Порывшись в своей помойке, откопал пару компонент от Vlad.
Да.а...
Оказывается все мы работаем на его помойку. Приятно... Нифига не скажешь.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 1173
Рейтинг: 49
#11: 2012-11-27 23:48:58 ЛС | профиль | цитата
[flood]
Tad писал(а):
на его помойку
На почётную помойку! [/flood]nickware, [flood]а почему у вас в топике в слове "суток" "то" написано серым цветом?[/flood]
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#12: 2012-11-27 23:52:04 ЛС | профиль | цитата
nickware,
code_29620.txt дальше самостоятельно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_29620.txt [1.3KB] [230]
Ответов: 294
Рейтинг: 64
#13: 2012-11-28 00:00:33 ЛС | профиль | цитата
Tad писал(а):
Да.а...
Оказывается все мы работаем на его помойку. Приятно... Нифига не скажешь.

Думал, что это очевидно, но раз нет, поясню:
"Помойка" в данном применении - не отражает сути в ней находящегося, а лишь соответствует моей организации хранения/структурирования файлов на компьютере... как то так)
карма: 0

0
Ответов: 355
Рейтинг: 2
#14: 2012-11-28 00:10:40 ЛС | профиль | цитата
Леонид, Quest, Tad, благодарю.
Ex_, [flood]Это тонкая шутка В других моих темах можете заметить подобные приколы[/flood]
карма: 1

0
Ответов: 1821
Рейтинг: 168
#15: 2012-11-28 00:20:36 ЛС | профиль | цитата
nickware, [flood]
nickware писал(а):
Это тонкая шутка
Я теперь понял, к чему это [/flood]
карма: 5

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)