06/03/20 18:51
Carlo
Postato originariamente da alip1:
------ ULTIMA ACCENSIONE IN EVENTO N. 30902
29/02/2020 08:58:54
Microsoft-Windows-UserModePowerService
ID: 12
PC: ALNB02
Come vedi dal messaggio Windows è in funzione dal 29 febbraio:
Microsoft-Windows-UserModePowerService
La modifica che hai fatto leggendo l'ID 1, legge un'altro evento, che non so se si presenta sempre in tutte le macchine e con tutti i sitemi operativi, l'ho provato su due PC Win7 e Win10, e funzionano anche da me, se ti va bene ok, oppure puoi trovare anche altri eventi, se togli l'if li vedi tutti, come nel visualizzatore eventi e puoi selezionare quello che vuoi.
Per ogni evento puoi anche avere altre info per esempio se aggiungi la riga:
Eventi.Add(EventoLogApp.Entries(i).Message)
avrai l'info estesa dell'evento.
Il log degli eventi del system di windows, è zeppo di informazioni, e il tuo è particolarmente esteso più di 32000 voci, il mio ne ha meno di 4000.
Ti consiglio di andare su
"opzioni risparmio energia" e scegliere in alto a sinistra la voce:
"Specifica comportamento pulsanti di alimentazione" e
"Specificare cosa avviene quando viene chiuso il coperchio"
Con il pulsante di alimentazione scegli
"Arresta il sistema", gli altri scegli tu, sospensione e ibernazione non riavviano veramente windows.
Ultima modifica effettuata da Carlo 06/03/20 19:36
in programmazione tutto è permesso
06/03/20 19:25
alip1
Grazie domattina vedrò meglio l'impostazione risparmio energia e riproverò. Poi farò sapere
aaa
07/03/20 12:20
Carlo
Alla luce di quanto postato da alip1, programma aggiornato.
Public Class Form1
Dim RiTeBo As New RichTextBox ' per visualizzare i risultati
Dim Button1 As New Button
Dim Button2 As New Button
Dim Label1 As New Label
Dim Label2 As New Label
Dim Eventi As New List(Of String) ' matrice di accumulo
Dim Timer1 As Timer
Dim OraACCENSIONE As Date? ' il punto interrogativo rende la variabile nullable
Dim OraACCENSIONE2 As Date
' ***********************************************************
' * *
' * LETTUTRA LOG SYSTEM DIAGNOSTIC DI WINDOWS *
' * *
' * IN QUESTO ESEMPIO RICERCA DI SOSPENSIONI *
' * E ARRESTI DI WINDOWS *
' * *
' * CAMBIANDO l'ID, SI POSSONO CERCARE ALTRI EVENTI *
' * *
' * TOGLIENDO L'IF SI POSSONO VISUALIZZARE TUTTI GLI EVENTI *
' * *
' ***********************************************************
Private Sub Button1_Click(sender As Object, e As EventArgs)
Dim EventoLogApp As New System.Diagnostics.EventLog("System") ' applicazione di diagnostica
Eventi.Clear()
RiTeBo.Clear()
RiTeBo.Refresh()
' ricerca dall'inizio, ID 12 = avvio, ID 13 = arresto (non si generano con sospensione o ibernazione)
For i = 1 To EventoLogApp.Entries.Count - 1
' ogni 50 eventi aggiorno la label (evita rallentamento)
If i Mod 50 = 0 Then Label1.Text = i & "/" & EventoLogApp.Entries.Count : Label1.Refresh()
If EventoLogApp.Entries(i).InstanceId.ToString = 12 Then
Eventi.Add("------ AVVIO SISTEMA IN EVENTO N. " & i)
Eventi.Add(EventoLogApp.Entries(i).TimeGenerated.ToString)
Eventi.Add(EventoLogApp.Entries(i).Source.ToString)
Eventi.Add("ID: " & EventoLogApp.Entries(i).InstanceId.ToString)
Eventi.Add("PC: " & EventoLogApp.Entries(i).MachineName.ToString)
Eventi.Add("")
End If
If EventoLogApp.Entries(i).InstanceId.ToString = 13 Then
Eventi.Add("------ ARRESTO SISTEMA IN EVENTO N. " & i)
Eventi.Add(EventoLogApp.Entries(i).TimeGenerated.ToString)
Eventi.Add(EventoLogApp.Entries(i).Source.ToString)
Eventi.Add("ID: " & EventoLogApp.Entries(i).InstanceId.ToString)
Eventi.Add("PC: " & EventoLogApp.Entries(i).MachineName.ToString)
Eventi.Add("")
End If
Next
Label1.Text = EventoLogApp.Entries.Count & "/" & EventoLogApp.Entries.Count
' visualizzazione veloce
RiTeBo.Lines = Eventi.ToArray
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs)
Dim EventoLogApp As New System.Diagnostics.EventLog("System")
Eventi.Clear()
RiTeBo.Clear()
' ricerca dalla fine, per trovare più velocemente gli ultimi avvii, ID 1 = TroubleShooter (si genera più volte durante l'avvio di win)
For i = EventoLogApp.Entries.Count - 1 To 1 Step -1
Label1.Text = i
Label1.Refresh()
If EventoLogApp.Entries(i).InstanceId = 1 Then
Eventi.Add("------ ULTIMO AVVIO WIN DOPO SOSPENSIONE, EVENTO N. " & i)
Eventi.Add(EventoLogApp.Entries(i).TimeGenerated.ToString)
If OraACCENSIONE Is Nothing Then
OraACCENSIONE = EventoLogApp.Entries(i).TimeGenerated
Timer1.Enabled = True
End If
Eventi.Add(EventoLogApp.Entries(i).Source.ToString)
Eventi.Add("ID: " & EventoLogApp.Entries(i).InstanceId.ToString)
Eventi.Add("PC: " & EventoLogApp.Entries(i).MachineName.ToString)
Eventi.Add("PC: " & EventoLogApp.Entries(i).Message)
Eventi.Add("")
End If
If EventoLogApp.Entries(i).InstanceId = 12 Then
Eventi.Add("------ ULTIMO AVVIO DOPO ARRESTO SISTEMA, EVENTO N. " & i)
Eventi.Add(EventoLogApp.Entries(i).TimeGenerated.ToString)
OraACCENSIONE2 = EventoLogApp.Entries(i).TimeGenerated
Timer1.Enabled = True
Eventi.Add(EventoLogApp.Entries(i).Source.ToString)
Eventi.Add("ID: " & EventoLogApp.Entries(i).InstanceId.ToString)
Eventi.Add("PC: " & EventoLogApp.Entries(i).MachineName.ToString)
Eventi.Add("")
Exit For ' al primo ID 12 trovato, ricerca interrotta
End If
Next
RiTeBo.Lines = Eventi.ToArray
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
' preparazione del Form
Button1.Text = "CERCA tutti"
Button1.Location = New Point(10, 10)
AddHandler Button1.Click, AddressOf Button1_Click
Me.Controls.Add(Button1)
Button2.Text = "CERCA ultima accensione"
Button2.Location = New Point(90, 10)
Button2.Width = 150
AddHandler Button2.Click, AddressOf Button2_Click
Me.Controls.Add(Button2)
Label1.Location = New Point(240, 16)
Label1.AutoSize = True
Me.Controls.Add(Label1)
Label2.Location = New Point(240, 30)
Label2.AutoSize = True
Me.Controls.Add(Label2)
RiTeBo.Location = New Point(10, 50)
Me.Controls.Add(RiTeBo)
Me.Size = New Size(400, 500)
Me.Text = "EVENTI ON/OFF - C.B."
Timer1 = New Timer
AddHandler Timer1.Tick, AddressOf timer1_tick
Timer1.Interval = 1000
Timer1.Enabled = False
End Sub
Private Sub Form1_SizeChanged(sender As Object, e As EventArgs) Handles Me.SizeChanged
RiTeBo.Size = New Size(Me.Width - 36, Me.Height - 100)
End Sub
Private Sub timer1_tick(sender As Object, e As EventArgs)
Label1.Text = Now.Subtract(OraACCENSIONE).ToString("G")
Label2.Text = Now.Subtract(OraACCENSIONE2).ToString("G")
End Sub
End Class
Ultima modifica effettuata da Carlo 07/03/20 12:49
in programmazione tutto è permesso
07/03/20 14:15
alip1
Postato originariamente da alip1:
Grazie domattina vedrò meglio l'impostazione risparmio energia e riproverò. Poi farò sapere
In effetti come pensava Carlo era in sospensione... ora ho messo "Arresta il sistema" e quando riparte ho:
utilizzando ID=12
------ ULTIMA ACCENSIONE IN EVENTO N. 32232
07/03/2020 15:01:46
Microsoft-Windows-UserModePowerService
ID: 12
PC: ALNB02
utilizzando ID=1 ho:
------ ULTIMA ACCENSIONE IN EVENTO N. 32248
07/03/2020 15:03:33
Microsoft-Windows-Power-Troubleshooter
ID: 1
PC: ALNB02
Volevo anche sottolineare che con gli altri codici il problema non si risolve, per cui nel ringraziare tutti consentitemi un ringraziamento particolare a Carlo.
Buon lavoro e buon week end a tutti
Ultima modifica effettuata da alip1 07/03/20 14:17
aaa
07/03/20 16:49
Carlo
Bene, con arresto sistema impiegherà un po' di più a partire, ma quando si vuole la sospensione basta attivarla chiudendo il coperchio del portatile, e quando si vuole arrestare veramente windows, usare il pulsante di accensione.
Ho controllato l'ID 1 si attiva due o tre volte mentre si avvia Windows, penso che può essere tranquillamente usato per calcolare da quanto tempo è acceso il PC anche dopo sospensione.
Ultima modifica effettuata da Carlo 07/03/20 16:50
in programmazione tutto è permesso