Windows 7 電源管理
上一篇介紹了如何在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()); }
運行程序:
源碼下載:PowerMgmt.zip
全站熱搜