Подтвердить что ты не робот

Как обнаружить, когда кабель питания ноутбука отключен?

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

Теперь я хочу написать небольшую программу на С#, которая обнаруживает, когда мой силовой кабель отключается, а затем испускает хороший длинный звуковой сигнал системы. Какой API я мог бы использовать для этого?

4b9b3361

Ответ 1

Это должно быть тривиально для реализации с использованием свойства SystemInformation.PowerStatus. И даже если это живет в Windows.Forms, оно должно быть прекрасно использовано из системной службы.

Для решения, которое также работает в Compact Framework, см. HOWTO: получить состояние питания устройства

Ответ 2

SystemEvents.PowerModeChanged. Вам нужно будет использовать либо GetSystemPowerStatus (см. Ссылку в одном из ответов), либо SystemInformation.PowerStatus(ссылка находится в другом ответе) в обработчике, чтобы проверить, что произошло.

Ответ 3

Это, вероятно, будет закрыто как не связанное с программированием, но вы можете проверить настройки BIOS.

Мой ноутбук Lenovo делает именно то, что вы предлагаете изначально. В моем BIOS есть настройка для подачи звукового сигнала при изменении состояния питания.

Ответ 4

Чтобы продолжить ответ BQ, в Windows есть настройки питания, которые можно изменить при удалении шнура питания. Поскольку я иногда работал с ним, я не менял параметры питания на своей машине, но когда батарея приближается к 15%, яркость экрана устанавливается на самый низкий уровень, что позволяет работать (и легко заменяется клавишей Fn-Home), но очень заметно, так что я снова подключаю кабель.

Ответ 5

Здесь небольшое решение: используя приложение формы Windows С#,

PowerStatus powerStatus = SystemInformation.PowerStatus;

if (powerStatus.PowerLineStatus == PowerLineStatus.Online)
{
    MessageBox.Show("Running On Power", Convert.ToString(powerStatus.BatteryLifePercent * 100) + "%");
}
else
{
    MessageBox.Show("Running On Battery", Convert.ToString(powerStatus.BatteryLifePercent * 100) + "%");
}

Надеюсь, у вас есть идея, теперь вы можете использовать ее каким-либо образом,...........

Ответ 6

Это может сильно зависеть от вашей точной операционной системы. Вот несколько вызовов для Windows XP, я уверен, вы можете найти эквиваленты Vista:

http://msdn.microsoft.com/en-us/library/ms704147(VS.85).aspx

Ответ 7

Невозможно думать о чем-либо, непосредственно доступном через платформу .NET, но я знаю, что у Intel есть SDK Mobile Platform с библиотеками .NET, которые должны предоставить вам эту информацию. Возможно, AMD имеет где-то равную.

Intel Mobile Platform SDK