如何检测笔记本电脑电源线何时断开?

无数次我的笔记本电脑刚刚在我的游戏过程中关闭,因为我的电源线断开连接而没有注意到它。

现在我想编写一个小C#程序,检测我的电源线断开连接然后发出一声很长的系统蜂鸣声。 我可以使用什么API?

使用SystemInformation.PowerStatus属性实现这一点应该是微不足道的。 即使它存在于Windows.Forms中,它也应该完全可以从系统服务中使用。

有关也适用于Compact Framework的解决方案,请参阅HOWTO:获取设备电源状态

SystemEvents.PowerModeChanged 。 您将需要在处理程序中使用GetSystemPowerStatus(请参阅其中一个答案中的链接)或SystemInformation.PowerStatus(链接在另一个答案中)来检查发生了什么。

这可能会因为与编程无关而关闭,但您可能需要检查BIOS设置。

我的联想笔记本电脑完全符合您的本意。 我的BIOS中有一个设置可以发出电源状态变化的哔哔声。

要继续BQ的答案,Windows中的电源设置可以在移除电源线时更改。 由于我有时使用它已删除我没有更改我的机器上的电源设置,但当电池接近15%时,屏幕亮度设置为最低级别,使其可以工作(并可以使用Fn-Home键轻松更改) )但非常明显,以便我及时将电缆插回。

这里有一点解决方案:使用C#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) + "%"); } 

希望,你明白了,现在你可以用任何方式,………..

这可能在很大程度上取决于您的确切操作系统。 以下是对Windows XP的一些调用,我相信你可以找到Vista等价物:

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

无法想象通过.NET框架可以直接访问的任何内容,但我知道英特尔拥有带有.NET库的Mobile Platform SDK,可以为您提供此信息。 有可能AMD在某个地方有一个等效的地方。

英特尔移动平台SDK