上一篇介绍了如何在Windows 7 中进行网络资源管理。除此之外Windows API Code Pack 还提供了电源管理方面的功能,本篇将继续通过简单实例演示如何在Windows 7 中进行电源管理。
首先为XAML 代码部分添加TabControl 及TabItem,用于显示电源状态信息。
<Grid> <TabControl x:Name="tabControl"> <TabItem x:Name="tabItem" Header="Power Management Info"> </TabItem> </TabControl> </Grid>
在上一讲实例中的AddProperty() 方法可以继续用来添加相关属性信息。创建LoadPowerMgmt() 方法,通过PowerManager 类获取电源相关状态数据。
private void LoadPowerMgmt() { StackPanel stackPanel = new StackPanel(); stackPanel.Orientation = Orientation.Vertical; AddProperty("Power Personality: ", PowerManager.PowerPersonality.ToString(), stackPanel); AddProperty("Power Source: ", PowerManager.PowerSource.ToString(), stackPanel); AddProperty("Is Battery Persent: ", PowerManager.IsBatteryPresent.ToString(), stackPanel); AddProperty("Is UPS Present: ", PowerManager.IsUpsPresent.ToString(), stackPanel); AddProperty("Is Battery Short Term: ", PowerManager.IsBatteryShortTerm.ToString(), stackPanel); AddProperty("Battery Life (%) : ", PowerManager.BatteryLifePercent.ToString(), stackPanel); AddProperty("Is Monitor Required: ", PowerManager.MonitorRequired.ToString(), stackPanel); AddProperty("Is Monitor On: ", PowerManager.IsMonitorOn.ToString(), stackPanel); tabItem.Content = stackPanel; }
在MainWindow() 中调用LoadPowerMgmt() 方法,使程序运行时自动加载。这样我们就可以在Tab 标签中看到LoadPowerMgmt() 方法获取的电源详细信息。
public MainWindow()
{
InitializeComponent();
LoadPowerMgmt();
}
除了获取以上静态数据外,还可为程序添加动态电源事件。如下代码所示,在Window_Loaded 中添加BatteryLifePercentChanged 事件,当电池电量发生变化时将触发相关事件。
private void Window_Loaded(object sender, RoutedEventArgs e) { PowerManager.BatteryLifePercentChanged += new EventHandler(BatteryLifePercentChanged); }
在BatteryLifePercentChanged 中增加事件内容,当电池电量发生变化时:修改ProgressBar 进度条和Label 标签数值。其他电源事件可参考:PowerSourceChanged,SystemBusyChanged,PowerPersonalityChanged,IsMonitorOnChanged。
private void BatteryLifePercentChanged(object sender, EventArgs e) { powerBar.Value = PowerManager.BatteryLifePercent; powerVal.Content = string.Format("{0}%", PowerManager.BatteryLifePercent.ToString()); }
运行程序:
源码下载
本文转自Gnie博客园博客,原文链接:http://www.cnblogs.com/gnielee/archive/2011/02/09/windows7-power-management.html,如需转载请自行联系原作者