我有一个方法来确定电池的水平,并保持一个计时器,以定期检查电池的水平。
void GetBatteryLevel()
{
try
{
//Use this code in next build
//System.Windows.Forms.PowerStatus status = System.Windows.Forms.SystemInformation.PowerStatus;
double batteryLevel;
ManagementObjectSearcher mos = new ManagementObjectSearcher("select EstimatedChargeRemaining from Win32_Battery");
ManagementObjectCollection collection = mos.Get();
foreach (ManagementObject mo in collection)
{
UInt16 remainingPercent = (UInt16)mo["EstimatedChargeRemaining"];
batteryLevel = (double)remainingPercent;
batteryLevel = batteryLevel / 100;
batteryLevel = 1.0 - batteryLevel;
BatteryLevel = new System.Windows.Point(0.0, batteryLevel);
}
}
catch (Exception exp)
{
Logger.LogMessage("EXCEPTION: " + exp.StackTrace);
}
}当电池电量下降或增加1%时,是否有办法登记事件?我已经注册了SystemEvents.PowerModeChanged,这很好。
发布于 2013-09-18 15:55:29
简短的答案来自.Net基类库no。
尽管如此,仍有可用的电源事件,但这些事件位于kernel32中。微软确实试图在SystemEvents类中为您提供一些这些事件的挂钩,但不幸的是,它们并没有绑定到所有这些事件中。看看电源管理API,没有一个事件可以以你想要的方式追踪电池。
电源事件: http://msdn.microsoft.com/en-us/library/windows/desktop/aa373162(v=vs.85).aspx
Power有一个名为GetSystemPowerStatus的方法,它将为您提供所需的信息。如果您对从C++内部使用.Net有一定的了解,您可以查询电池信息,并且当电池信息发生变化时触发您自己的事件。
GetSystemPowerStatus: http://msdn.microsoft.com/en-us/library/windows/desktop/aa372693(v=vs.85).aspx
https://stackoverflow.com/questions/18865979
复制相似问题