Imports AgentObjects
Imports AxAgentObjects
Imports Microsoft.Win32
Imports System.management
Public Class Form1
Private objBatteria As ManagementObjectSearcher
Private objMgmt As ManagementObject
Dim Character As AgentObjects.IAgentCtlCharacter
Dim StatoBatteriaNumeri As String
Dim StatoBatteriaNumeriPrec As String
Dim PercentualeCarica As String
Dim PercentualeCaricaPrec As String
Dim StatoBatteriaParole As String
Dim NomeUtente As String = My.User.CurrentPrincipal.Identity.Name.ToString
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim Schermo As System.Drawing.Rectangle
Dim sChar As String = "C:\WINDOWS\msagent\chars\merlin.acs"
Try
AgtAgent.Characters.Load("CharacterID", sChar)
Character = AgtAgent.Characters("CharacterID")
Character.LanguageID = &H410
Character.Show()
Catch ex As Exception
MessageBox.Show("Descrizione errore: " & ex.Message, "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Character.MoveTo(Schermo.Width + 0, Schermo.Height + 640)
Character.MoveTo(Schermo.Width + 1100, Schermo.Height + 640)
Character.Speak("Ciao " & NomeUtente & " sono Merlino, sono stato creato da Progman-92!!!!")
Character.Speak("Sono ancora una Beta, non sono ancora sviluppato completamente!!!!")
Character.Speak("Sono il tuo assistente virtuale, riguardo il reparto energetico del tuo PC Notebook!!!!")
Character.Speak("Ti informerò sullo stato della Batteria e se è in carica o meno!!!!")
Timer1.Start()
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
objBatteria = New ManagementObjectSearcher("SELECT * FROM Win32_Battery")
Try
For Each objMgmt In objBatteria.Get
PercentualeCaricaPrec = objMgmt("EstimatedChargeRemaining").ToString
StatoBatteriaNumeri = objMgmt("BatteryStatus").ToString
If StatoBatteriaNumeri <> StatoBatteriaNumeriPrec Then
If StatoBatteriaNumeri = "1" Then
StatoBatteriaParole = "'Non collegata alla rete elettrica'"
End If
If StatoBatteriaNumeri = "2" Then
StatoBatteriaParole = "'Collegata alla rete elettrica'"
End If
If StatoBatteriaNumeri = "3" Then
StatoBatteriaParole = "'Livello massimo di carica'"
End If
If StatoBatteriaNumeri = "4" Then
StatoBatteriaParole = "'Livello basso di carica'"
End If
If StatoBatteriaNumeri = "5" Then
StatoBatteriaParole = "'Livello critico di carica'"
End If
If StatoBatteriaNumeri = "6" Then
StatoBatteriaParole = "'In Caricamento'"
End If
If StatoBatteriaNumeri = "7" Then
StatoBatteriaParole = "'In caricamento, livello alto di carica'"
End If
If StatoBatteriaNumeri = "8" Then
StatoBatteriaParole = "'In caricamento, livello basso di carica'"
End If
If StatoBatteriaNumeri = "9" Then
StatoBatteriaParole = "'In caricamento, livello critico di carica'"
End If
If StatoBatteriaNumeri = "10" Then
StatoBatteriaParole = "'Stato non definito'"
End If
If StatoBatteriaNumeri = "11" Then
StatoBatteriaParole = "'Livello parziale di carica'"
End If
Character.Speak("Lo stato della Batteria è " & StatoBatteriaParole & "!!!!")
End If
Next
Catch ex As Exception
MessageBox.Show(ex.ToString, "Errore eccezione non gestita", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Timer2.Start()
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
Timer1.Stop()
objBatteria = New ManagementObjectSearcher("SELECT * FROM Win32_Battery")
Try
For Each objMgmt In objBatteria.Get
PercentualeCarica = objMgmt("EstimatedChargeRemaining").ToString
StatoBatteriaNumeriPrec = objMgmt("BatteryStatus").ToString
If StatoBatteriaNumeriPrec <> StatoBatteriaNumeri Then
If StatoBatteriaNumeriPrec = "1" Then
StatoBatteriaParole = "'Non collegata alla rete elettrica'"
End If
If StatoBatteriaNumeriPrec = "2" Then
StatoBatteriaParole = "'Collegata alla rete elettrica'"
End If
If StatoBatteriaNumeriPrec = "3" Then
StatoBatteriaParole = "'Livello massimo di carica'"
End If
If StatoBatteriaNumeriPrec = "4" Then
StatoBatteriaParole = "'Livello basso di carica'"
End If
If StatoBatteriaNumeriPrec = "5" Then
StatoBatteriaParole = "'Livello critico di carica'"
End If
If StatoBatteriaNumeriPrec = "6" Then
StatoBatteriaParole = "'In Caricamento'"
End If
If StatoBatteriaNumeriPrec = "7" Then
StatoBatteriaParole = "'In caricamento, livello alto di carica'"
End If
If StatoBatteriaNumeriPrec = "8" Then
StatoBatteriaParole = "'In caricamento, livello basso di carica'"
End If
If StatoBatteriaNumeriPrec = "9" Then
StatoBatteriaParole = "'In caricamento, livello critico di carica'"
End If
If StatoBatteriaNumeriPrec = "10" Then
StatoBatteriaParole = "'Stato non definito'"
End If
If StatoBatteriaNumeriPrec = "11" Then
StatoBatteriaParole = "'Livello parziale di carica'"
End If
Character.Speak("Lo stato della Batteria è " & StatoBatteriaParole & "!!!!")
End If
If PercentualeCarica.ToString <> PercentualeCaricaPrec.ToString Or PercentualeCaricaPrec.ToString <> PercentualeCarica.ToString Then
Character.Speak("La percentuale di carica della Batteria rimasta è " & PercentualeCarica & "!!!!")
If PercentualeCarica < "30" Then
Character.Speak(NomeUtente & " la percentuale di carica della Batteria rimasta è inferiore al 10%, se devi continuare a lavorare ti consiglio di collegarti alla rete elettrica o sostituire la batteria del tuo Pc NoteBook o spegnere il Pc per evitare la perdita di file!!!!")
End If
End If
Timer1.Start()
Timer2.Stop()
Next
Catch ex As Exception
MessageBox.Show(ex.ToString, "Errore eccezione non gestita", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
End Class