Moniteur de batterie, pocket pc

Description

Une petite application Pocket PC permettant de récuppérer l'état de batterie principale et secondaire d'un Pocket

L'application utilise une API du compact framework GetSystemPowerStatusEx2 déclarée dans l'assembly mscorelib

Source / Exemple :


using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace PowerStatus
{
    public partial class frmMain : Form
    {
        public frmMain()
        {
            InitializeComponent();
        }
        
        // Structure de données utilisée pour la lecture d'informations sur l'état de batterie
        public class SYSTEM_POWER_STATUS_EX2
        {
            public byte ACLineStatus;
            public byte BatteryFlag;
            public byte BatteryLifePercent;
            public byte Reserved1;
            public uint BatteryLifeTime;
            public uint BatteryFullLifeTime;
            public byte Reserved2;
            public byte BackupBatteryFlag;
            public byte BackupBatteryLifePercent;
            public byte Reserved3;
            public uint BackupBatteryLifeTime;
            public uint BackupBatteryFullLifeTime;
            public uint BatteryVoltage;
            public uint BatteryCurrent;
            public uint BatteryAverageCurrent;
            public uint BatteryAverageInterval;
            public uint BatterymAHourConsumed;
            public uint BatteryTemperature;
            public uint BackupBatteryVoltage;
            public byte BatteryChemistry;
        }
        [DllImport("coredll")]
        private static extern uint GetSystemPowerStatusEx2(SYSTEM_POWER_STATUS_EX2 lpSystemPowerStatus, uint dwLen, bool fUpdate);

        private void timer_Tick(object sender, System.EventArgs e)
        {
            // Appelle de la fonction, on lui passe le pointeur de la structure.
            // elle remplit la structure de données et lit les données simplement

            SYSTEM_POWER_STATUS_EX2 status = new SYSTEM_POWER_STATUS_EX2();

            if (GetSystemPowerStatusEx2(status, (uint)Marshal.SizeOf(status), false) == (uint)Marshal.SizeOf(status))
            {
                // La barre de progression principale
                this.lblMainBat.Text = String.Format("{0}%", status.BatteryLifePercent);
                this.pbrMainLevel.Value = status.BatteryLifePercent;

                switch (status.ACLineStatus)
                {
                    case 0:
                        this.lblACStatus.Text = "Chargeur non connecté.";
                        break;
                    case 1:
                        this.lblACStatus.Text = "En charge.";
                        break;
                    case 2:
                        this.lblACStatus.Text = "Batterie secondaire en service.";
                        break;
                    case 3:
                        this.lblACStatus.Text = "Unconnu.";
                        break;
                    default:
                        break;
                }
                // Barre de progression secondaire.
                this.lblBackupBat.Text = String.Format("{0}%", status.BackupBatteryLifePercent);
                this.pbrBackLevel.Value = status.BackupBatteryLifePercent;
            }
        }

        private void menuItem1_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Voullez vous vraiment quitter l'application?","Confirmation de sortie",MessageBoxButtons.YesNo,MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
                Application.Exit();
        }

        private void menuItem2_Click(object sender, EventArgs e)
        {
            timer_Tick(this, EventArgs.Empty);
        }
    }
}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.