jerlo11
Messages postés109Date d'inscriptionmardi 19 mai 2015StatutMembreDernière intervention17 novembre 2022
-
Modifié par jerlo11 le 16/09/2016 à 14:21
vb95
Messages postés3443Date d'inscriptionsamedi 11 janvier 2014StatutNon membreDernière intervention 7 décembre 2023
-
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 ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018212 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 ...
jerlo11
Messages postés109Date d'inscriptionmardi 19 mai 2015StatutMembreDernière intervention17 novembre 2022 17 sept. 2016 à 12:45
Résolu avec 2 Timers qui ce font echo ;)
vb95
Messages postés3443Date d'inscriptionsamedi 11 janvier 2014StatutNon membreDernière intervention 7 décembre 2023165 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