У меня постоянно выключается ноутбук из-за того, что я не успеваю или забываю подключиться к зарядному устройству. Я не захотел пользоваться сторонними программами, а написал свою.
Использую переменную sys типа TSystemPowerStatus. Функция GetSystemPowerStatus вернет состояние батареи в переменную. У этой переменной появились методы.:
Я покажу только самые важные для нас.
BatteryLifePercent: byte -Оставшийся ресурс батареи в процентах
BatteryLifeTime: DWORD -Оставшееся время в секундах
ACLineStatus: byte -Подключение к сети. Если вернет 1, то компьютер подключен к зарядному устройству.
Форма нам не нужна, скроем ее на событии формы OnCreate:
Теперь сам код проверки. Для события таймера OnTimer пишем следующий код:
procedure TForm3.Timer1Timer(Sender: TObject);
var
Sys: TSystemPowerStatus;
begin
GetSystemPowerStatus(sys); //Получаем сведения о батарее
if sys.ACLineStatus=1 then // Если подключены к сети, то выходим
exit;
if sys.BatteryLifePercent< 40 then //Если заряд меньше 40 процентов, то выводим сообщение.
begin
Application.MessageBox('Подключите зарядное, чтобы не потерять выполненную работу',PChar('Осталось '+inttostr(sys.BatteryLifePercent)+'% заряда'),MB_OK) ;
end;
end;
ACLineStatus: byte -Подключение к сети. Если вернет 1, то компьютер подключен к зарядному устройству.
Форма нам не нужна, скроем ее на событии формы OnCreate:
procedure TForm3.FormCreate(Sender: TObject);
begin
Application.ShowMainform:=false;
end;
Установим на форму 1 таймер. Свойство interval я установил 180000 (3 минуты), чтобы проверка на количество заряда проходила каждые 3 минуты.Теперь сам код проверки. Для события таймера OnTimer пишем следующий код:
procedure TForm3.Timer1Timer(Sender: TObject);
var
Sys: TSystemPowerStatus;
begin
GetSystemPowerStatus(sys); //Получаем сведения о батарее
if sys.ACLineStatus=1 then // Если подключены к сети, то выходим
exit;
if sys.BatteryLifePercent< 40 then //Если заряд меньше 40 процентов, то выводим сообщение.
begin
Application.MessageBox('Подключите зарядное, чтобы не потерять выполненную работу',PChar('Осталось '+inttostr(sys.BatteryLifePercent)+'% заряда'),MB_OK) ;
end;
end;
Комментариев нет:
Отправить комментарий