電源状態(AC電源か?バッテリーか?)を取得するには
PowerStatusクラスのPowerLineStatusプロパティーを参照します。
電源変更通知を取得する場合は
Microsoft.Win32.SystemEvents.PowerModeChanged
イベントを取得してください。
以下のサンプルは
タスクトレイアイコンに電源変更通知のバルーンを表示します。
FormプロジェクトにnotifyIconを1つ追加してください。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace PowerNotifier
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// タスクトレイアイコンを見えるように
notifyIcon1.Visible = true;
// 電源状態が変更されたことを通知する
Microsoft.Win32.SystemEvents.PowerModeChanged += new Microsoft.Win32.PowerModeChangedEventHandler(SystemEvents_PowerModeChanged);
// 通知
Notifier();
}
void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
{
switch (e.Mode)
{
// 電源状態が変更された
case Microsoft.Win32.PowerModes.StatusChange:
Notifier();
break;
}
}
void Notifier()
{
PowerStatus ps = SystemInformation.PowerStatus;
switch (ps.PowerLineStatus)
{
case PowerLineStatus.Online:
notifyIcon1.BalloonTipTitle = "電源状態";
notifyIcon1.BalloonTipText = "AC電源です";
notifyIcon1.ShowBalloonTip(10000);
break;
case PowerLineStatus.Offline:
notifyIcon1.BalloonTipTitle = "電源状態";
notifyIcon1.BalloonTipText = "バッテリーです";
notifyIcon1.ShowBalloonTip(10000);
break;
case PowerLineStatus.Unknown:
break;
}
}
}
}