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,