Moniteur de batterie, pocket pc

Soyez le premier à donner votre avis sur cette source.

Vue 9 853 fois - Téléchargée 362 fois

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

Ajouter un commentaire

Commentaires

Messages postés
14
Date d'inscription
dimanche 2 août 2009
Statut
Membre
Dernière intervention
18 juin 2010

mrrci
Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
1
Mais au moin j'ai participer par mais connaissance,

Je ne sais pas pourquoi tout le monde prend le réseau codes sources comme une biblio de programmes complets!!
Le code est mis sous la catégorie Débutant
En plus, c'est une démonstration de l'utilisation d'une API


et a la moindre Mettre une source didacticielle c'est pas coder un programme!

Si c'est le cas je te félicite pour cette montalité!
Messages postés
126
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
9 novembre 2009
2
Je ne voudrais pas être méchant mais rajouter 2 progressbar, ce n'est pas coder un programme... :S

http://www.microsoft.com/downloads/details.aspx?familyid=e69968f9-5fc2-4456-852a-757f32312d91&displaylang=en
Messages postés
78
Date d'inscription
dimanche 8 mai 2005
Statut
Membre
Dernière intervention
21 mars 2018
1
NB: Pour le simulateurs, On peut changer le niveau de la batterie
Voir Menu File-> Configure ... -> Peripherals puis on coche la case a cocher battery (Necessaire pour l'application) et on change le pourcentage...

Bon prog

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.