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

Résolu
jerlo11 Messages postés 108 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 13 février 2022 - Modifié par jerlo11 le 16/09/2016 à 14:21
vb95 Messages postés 3061 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 29 septembre 2022 - 17 sept. 2016 à 13:18
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 :
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,

3 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 236
16 sept. 2016 à 17:47
Bonjour,
Je viens de parcourir dans MSDN la classe SystemInformation et découvre (je ne suis pas vb.nettiste) qu'elle ne connaît aucun évènement.
C'est bien dommage et je le déplore. Le contrôle SysInfo de VB6 connaît nativement, lui, l'évènement PowerStatusChanged.
Je ne suis pas VB.Nettiste (redit). Je pense qu'il va te falloir créer toi-même cet évènement manquant ou un substitut avec timer ...
0
vb95 Messages postés 3061 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 29 septembre 2022 158
16 sept. 2016 à 18:21
0
jerlo11 Messages postés 108 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 13 février 2022
17 sept. 2016 à 12:45
Résolu avec 2 Timers qui ce font echo ;)
0
vb95 Messages postés 3061 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 29 septembre 2022 158
17 sept. 2016 à 13:18
bonjour jerlo11
Tu es sur un forum de développement et le moins que tu puisses faire c'est d'en faire profiter la communauté
Si tu postais ta solution avec explication et commentaires ce serait la moindre des chose .
Bon weekend
0