첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

728x90
반응형

■ PowerStatus 클래스 : 배터리 정보 구하기

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


TestProject.zip


MainForm.cs

 

 

using System;

using System.ComponentModel;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 메인 폼

    /// </summary>

    public partial class MainForm : Form

    {

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

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

 

        #region Field

 

        /// <summary>

        /// 타이머

        /// </summary>

        private Timer timer = new Timer();

 

        #endregion

 

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

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

 

        #region 생성자 - MainForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public MainForm()

        {

            InitializeComponent();

        }

 

        #endregion

 

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

        ////////////////////////////////////////////////////////////////////////////////////////// Protected

 

        #region 로드시 처리하기 - OnLoad(e)

 

        /// <summary>

        /// 로드시 처리하기

        /// </summary>

        /// <param name="e">이벤트 인자</param>

        protected override void OnLoad(EventArgs e)

        {

            base.OnLoad(e);

 

            this.timer.Interval = 5000;

 

            this.timer.Tick += timer_Tick;

 

            this.timer.Start();

 

            UpdateInformation();

        }

 

        #endregion

        #region 종료시 처리하기 - OnClosing(e)

 

        /// <summary>

        /// 종료시 처리하기

        /// </summary>

        /// <param name="e">이벤트 인자</param>

        protected override void OnClosing(CancelEventArgs e)

        {

            base.OnClosing(e);

 

            this.timer.Stop();

        }

 

        #endregion

 

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

        //////////////////////////////////////////////////////////////////////////////// Event

 

        #region 타이머 틱 처리하기 - timer_Tick(sender, e)

 

        /// <summary>

        /// 타이머 틱 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void timer_Tick(object sender, EventArgs e)

        {

            UpdateInformation();

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////// Function

 

        #region 정보 업데이트하기 - UpdateInformation()

 

        /// <summary>

        /// 정보 업데이트하기

        /// </summary>

        private void UpdateInformation()

        {

            PowerStatus status = SystemInformation.PowerStatus;

 

            // 충전 상태

            this.chargeStatusTextBox.Text = status.BatteryChargeStatus.ToString();

 

            // 완충시 사용 시간

            if(status.BatteryFullLifetime != -1)

            {

                this.fullLifetimeTextBox.Text = status.BatteryFullLifetime.ToString();

            }

            else

            {

                this.fullLifetimeTextBox.Text = "-";

            }

 

            // 전원 상태

            this.powerLineStatusTextBox.Text = status.PowerLineStatus.ToString();

 

            // 잔여 사용 시간

            if(status.BatteryLifeRemaining != -1)

            {

                this.lifeRemainingTextBox.Text = TimeSpan.FromSeconds(status.BatteryLifeRemaining).ToString();

            }

            else

            {

                this.lifeRemainingTextBox.Text = "-";

            }

 

            // 충전 비율

            if(status.BatteryLifePercent != 255)

            {

                this.lifePercentProgressBar.Value = (int)(status.BatteryLifePercent * 100);

            }

            else

            {

                this.lifePercentProgressBar.Value = 0;

            }

        }

 

        #endregion

    }

}

 

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

728x90
반응형
Posted by 사용자 icodebroker

댓글을 달아 주세요