■ 전원 상태 구하기

----------------------------------------------------------------------------------------------------

BatteryStatusType.cs

 

/// <summary>

/// 배터리 상태 종류

/// </summary>

public enum BatteryStatusType

{

    /// <summary>

    /// 해당 없음

    /// </summary>

    None,

 

    /// <summary>

    /// 배터리

    /// </summary>

    Battery,

 

    /// <summary>

    /// 충전중

    /// </summary>

    Charge,

 

    /// <summary>

    /// 전원

    /// </summary>

    AC

}

 

BatteryManager.cs

 

using System;

using System.Windows.Forms;

 

/// <summary>

/// 배터리 관리자

/// </summary>

public class BatteryManager

{

    //////////////////////////////////////////////////////////////////////////////////////////////////// Field

    ////////////////////////////////////////////////////////////////////////////////////////// Private

 

    #region Field

 

    /// <summary>

    /// 배터리 상태 종류

    /// </summary>

    private BatteryStatusType batteryStatusType = BatteryStatusType.None;

 

    /// <summary>

    /// 전력 수명 시간 수

    /// </summary>

    private int powerLifeHourCount = 0;

 

    /// <summary>

    /// 전력 수명 분 수

    /// </summary>

    private int powerLifeMinuteCount = 0;

 

    /// <summary>

    /// 전력 수명 퍼센트

    /// </summary>

    private int powerLifePercent = 0;

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 배터리 상태 종류 - BatteryStatusType

 

    /// <summary>

    /// 배터리 상태 종류

    /// </summary>

    public BatteryStatusType BatteryStatusType

    {

        get

        {

            return this.batteryStatusType;

        }

    }

 

    #endregion

 

    #region 전력 수명 시간 수 - PowerLifeHourCount

 

    /// <summary>

    /// 전력 수명 시간 수

    /// </summary>

    public int PowerLifeHourCount

    {

        get

        {

            return this.powerLifeHourCount;

        }

    }

 

    #endregion

 

    #region 전력 수명 분 수 - PowerLifeMinuteCount

 

    /// <summary>

    /// 전력 수명 분 수

    /// </summary>

    public int PowerLifeMinuteCount

    {

        get

        {

            return this.powerLifeMinuteCount;

        }

    }

 

    #endregion

 

    #region 전력 수명 퍼센트 - PowerLifePercent

 

    /// <summary>

    /// 전력 수명 퍼센트

    /// </summary>

    public int PowerLifePercent

    {

        get

        {

            return this.powerLifePercent;

        }

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 생성자 - BatteryManager()

 

    /// <summary>

    /// 생성자

    /// </summary>

    public BatteryManager()

    {

        Refresh();

    }

 

    #endregion

 

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method

    ////////////////////////////////////////////////////////////////////////////////////////// Public

 

    #region 갱신하기 - Refresh()

 

    /// <summary>

    /// 갱신하기

    /// </summary>

    public void Refresh()

    {

        int powerLifeRemainingSecondCount = SystemInformation.PowerStatus.BatteryLifeRemaining;

 

        if(SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Offline)

        {

            this.batteryStatusType = BatteryStatusType.Battery;

 

            this.powerLifeHourCount = powerLifeRemainingSecondCount / 120;

 

            this.powerLifeMinuteCount = powerLifeRemainingSecondCount / 60 - powerLifeRemainingSecondCount / 120;

        }

        else

        {

            if(SystemInformation.PowerStatus.BatteryLifePercent < 1)

            {   

                this.batteryStatusType = BatteryStatusType.Charge;

            }

            else

            {

                this.batteryStatusType = BatteryStatusType.AC;

            }

 

            this.powerLifeHourCount   = 0;

            this.powerLifeMinuteCount = 0;

        }

 

        this.powerLifePercent = Convert.ToInt32(SystemInformation.PowerStatus.BatteryLifePercent * 100f);

    }

 

    #endregion

 

    #region 문자열 구하기 - ToString()

 

    /// <summary>

    /// 문자열 구하기

    /// </summary>

    /// <returns>문자열</returns>

    public override string ToString()

    {

        string batteryStatusTypeString = string.Empty;

 

        switch(this.batteryStatusType)

        {

            case BatteryStatusType.Battery : batteryStatusTypeString = "배터리"; break;

            case BatteryStatusType.Charge  : batteryStatusTypeString = "충전중"; break;

            case BatteryStatusType.AC      : batteryStatusTypeString = "전원";   break;

        }

 

        return string.Format("{0}:{1}", batteryStatusTypeString, this.powerLifePercent);

    }

 

    #endregion

}

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요