IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

Détecter changement état d'alimentation PC portable ou tablette Windows


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    developpeur
    Inscrit en
    Décembre 2011
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : developpeur
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2011
    Messages : 141
    Points : 60
    Points
    60
    Par défaut Détecter changement état d'alimentation PC portable ou tablette Windows
    Bonjour à toutes et tous,

    J'essaie de me faire un petit programme pour détecter en boucle un éventuel changement d'état de l'alimentation (pc portable ou tablette Windows) mais sans succès...

    Après de nombreuses recherches sur internet je me permet de poster ici pour essayer d'avancer sur un bout de code mais étant débutant je n'ai rien trouvé de concret.

    Voici mon code actuel que j'ai mis dans l'évenement Form_Load car ne sachant pour ou le placer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    Public Class Form1
     
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Dim psBattery As PowerStatus = SystemInformation.PowerStatus
            Dim perFull As Single = psBattery.PowerLineStatus
     
            Dim sps As BatteryStatus.SYSTEM_POWER_STATUS = BatteryStatus.GetStatus
     
            lbl_AC.Text = String.Concat("Power AC : ", [Enum].GetName(GetType(BatteryStatus.ACLineStatus), sps.ACLineStatus))
     
            Select Case sps.ACLineStatus
                Case 0
                    lbl_etatalim.Text = "Statut de l'alimentation : Débranchée du secteur " & vbCrLf & "Niveau de la batterie :" & perFull * 100 & "%"
                Case 1
                    lbl_etatalim.Text = "Statut de l'alimentation : Branchée sur secteur " & vbCrLf & "Niveau de la batterie :" & perFull * 100 & "%"
                Case 255
                    lbl_etatalim.Text = "Statut de l'alimentation : Inconnu"
            End Select
     
     
            Select Case sps.BatteryFlag
                Case 1
                    'La batterie est haute"
                Case 2
                    '"La batterie est basse"
                Case 4
                    '"La batterie est critique"
                Case 8
                    '"La batterie est en charge"
                Case 128
                    '"Statut batterie : Aucune batterie de secours")
                Case 255
                    '("Battery charge status: Unknown Status")
            End Select
     
        End Sub
    End Class
     
    Public Class BatteryStatus
        Private Declare Auto Function GetSystemPowerStatus Lib "kernel32.dll" ( _
            ByRef lpSystemPowerStatus As SYSTEM_POWER_STATUS) _
        As Integer
     
        Public Structure SYSTEM_POWER_STATUS
            Public ACLineStatus As ACLineStatus
            Public BatteryFlag As BatteryFlag
            Public BatteryLifePercent As Byte
            Public Reserved1 As Byte
            Public BatteryLifeTime As Integer
            Public BatteryFullLifeTime As Integer
        End Structure
     
        Public Enum BatteryFlag As Byte
            High = 1
            Low = 2
            Critical = 4
            Charging = 8
            NoSystemBattery = 128
            Unknown = 255
        End Enum
     
        Public Enum ACLineStatus As Byte
            Offline = 0
            Online = 1
            Unknown = 255
        End Enum
     
        Public Shared Function GetStatus() As SYSTEM_POWER_STATUS
            Dim SPS As New SYSTEM_POWER_STATUS
            GetSystemPowerStatus(SPS)
            Return SPS
        End Function
    End Class

    Dans quel événement placer ce code ? faut-il utiliser un Timer pour créer une boucle ?
    Est-ce qu'une personne aurai un exemple concret pour m'aider ?

    Vous remerciant par avance,
    Très cordialement,

  2. #2
    Membre chevronné
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 179
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 179
    Points : 1 776
    Points
    1 776
    Par défaut
    Bonjour.

    Tu peux t'abonner à l'évènement système SystemEvents.PowerModeChanged qui est déclenché lors d'un changement d'état de l'alimentation (et lors de la mise en/sortie de veille) et mettre ton code dans une sub dédiée.

    Dans le Load :
    AddHandler SystemEvents.PowerModeChanged, AddressOf OnPowerChange

    Et :
    Sub OnPowerChange()
    ... ton code ici ...
    End Sub

    Cdt.
    Bon à savoir : la touche F1 ne sert pas à commander des places pour le grand prix de Belgique.

Discussions similaires

  1. Option d'alimentation - luminosité - portable
    Par Tex-Twil dans le forum Windows Vista
    Réponses: 1
    Dernier message: 20/03/2008, 11h15
  2. Détecter changement d'enregistrement ?
    Par bicz400 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 07/02/2008, 14h52
  3. Détecter changement de focus
    Par Goduak dans le forum C#
    Réponses: 1
    Dernier message: 17/04/2007, 09h22
  4. probleme d'alimentation de portable
    Par unNew dans le forum Windows XP
    Réponses: 2
    Dernier message: 13/11/2005, 14h01
  5. Détecter les états des boutons (enfoncé, relaché)
    Par Tray dans le forum C++Builder
    Réponses: 3
    Dernier message: 17/03/2005, 20h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo