Oppure

Loading
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:hail::k:
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
07/03/20 17:47
alip1
Postato originariamente da 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.


Grazie:k::asd:
aaa