Oppure

Loading
13/02/20 18:22
alip1
Postato originariamente da alip1:

Postato originariamente da alip1:

Postato originariamente da nessuno:

Stai eseguendo il programma localmente o su un sistema remoto? Su un sistema fisico o virtuale?

A me continua a non dare altri problemi. Prova anche questo codice (più affidabile del TickCount che ha un limite di giorni)

        Dim query As New SelectQuery("SELECT LastBootUpTime FROM Win32_OperatingSystem WHERE Primary='true'")
        Dim searcher = New ManagementObjectSearcher(query)

        Dim ret As String = ""
        Dim mo As ManagementObject
        For Each mo In searcher.Get()
            Dim dtBootTime As DateTime = ManagementDateTimeConverter.ToDateTime(mo.Properties("LastBootUpTime").Value.ToString())
            ret = (Now - dtBootTime).ToString()
        Next

        Return ret


Grazie lo proverò di certo e farò sapere.
Intanto confermo che sto lavorando sul mio pc in locale é sconnesso da qualsiasi rete tranne internet ovviamente!!
Buona serata


ho i seguenti errori:
'SelectQuery ' is not defined
'ManagementObjectSearcher' is not defined
'ManagementObject' is not defined

ho questi Imports impostati:
Imports System
Imports System.Security
Imports System.IO
Imports System.IO.File
Imports System.IO.FileStream
Imports System.Windows.Forms

Occorre forse altro?
Grazie


Scusatemi volevo solo comunicare che ho risolto: Mi mancava di aver aggiunto in References del progetto System.Management:pat::pat:
aaa
14/02/20 19:11
nessuno
E quindi ora che hai corretto il codice il tempo come va? Non hai detto nulla...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
14/02/20 21:31
Carlo
in programmazione tutto è permesso
06/03/20 8:36
alip1
Postato originariamente da nessuno:

E quindi ora che hai corretto il codice il tempo come va? Non hai detto nulla...


Purtroppo no ottengo sempre valori non coerenti.. se ho acceso il notebook da 10 minuti mi restituisce che é acceso da 7 giorni!!
Proprio non riesco a capire.. ho provato tutte le soluzioni suggerite ma il risultato non cambia...
scusate il ritardo con cui rispondo ma ero fuori...
Grazie a tutti8-|
aaa
06/03/20 8:40
alip1
Postato originariamente da Carlo:

vedi se ti funziona questo esempio:
pierotofy.it/pages/sorgenti/dettagli/19553-Il_tempo_e_le_date/

Grazie ma é proprio da questo che sono partito per trovare una soluzione ... ma come già detto tutte le soluzioni suggerite mi danno lo stesso risultato. Devo cominciare a credere a chi in un altro forum mi ha detto che non è colpa delle mie routine ma per come Windows 10 gestisce i dati di accensione spegnimento e aggiornamento..!! Tant'é...8-|
aaa
06/03/20 13:40
Carlo
Si, Win10 gestisce la sospensione e l'ibernazione del PC, tali modalità non sono dei veri spegnimenti, per questo trovi tempi più lunghi di quello che ti aspetti, in Win10, un sistema per sapere da quanto tempo è partito il S.O, che è quello che cerchi tu, è andare a cercare nel log degli eventi del system di windows, data e ora di avvio kernel, che in VB.NET si fa così:
Public Class Form1

    Dim RiTeBo As New RichTextBox
    Dim Button1 As New Button
    Dim Button2 As New Button
    Dim Label1 As New Label
    Dim Eventi As New List(Of String)
    Dim Timer1 As Timer
    Dim OraACCENSIONE As Date

    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
        For i = 1 To EventoLogApp.Entries.Count - 1
            If i Mod 50 = 0 Then Label1.Text = i : Label1.Refresh()
            If EventoLogApp.Entries(i).InstanceId.ToString = 12 Then
                Eventi.Add("------ ACCENSIONE PC 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("------ SPEGNIMENTO PC 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
        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 l'ultimo avvio
        For i = EventoLogApp.Entries.Count - 1 To 1 Step -1
            Label1.Text = i
            Label1.Refresh()
            If EventoLogApp.Entries(i).InstanceId.ToString = 12 Then
                Eventi.Add("------ ULTIMA ACCENSIONE IN EVENTO N. " & i)
                Eventi.Add(EventoLogApp.Entries(i).TimeGenerated.ToString)
                OraACCENSIONE = EventoLogApp.Entries(i).TimeGenerated
                Eventi.Add(EventoLogApp.Entries(i).Source.ToString)
                Eventi.Add("ID: " & EventoLogApp.Entries(i).InstanceId.ToString)
                Eventi.Add("PC: " & EventoLogApp.Entries(i).MachineName.ToString)
                timer1.Enabled = True
                Exit For
            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)
        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 - 40, Me.Height - 100)
    End Sub

    Private Sub timer1_tick(sender As Object, e As EventArgs)
        Label1.Text = Now.Subtract(OraACCENSIONE).ToString("G")
    End Sub
End Class


Poi con l'ora di sistema fai il calcolo di quanto tempo è trascorso, come vedi nella sub timer1_tick. Da questo esempio prendi quello che ti serve, il codice aggiunge anche i componenti sul form, basta che incolli tutto in un nuovo progetto WinForm.
In system c'è tutto e di più, ho filtrato solo quello che è riferito all'avvio/arresto del kernel

Allegato anche il progetto completo.
Ultima modifica effettuata da Carlo 06/03/20 16:10
in programmazione tutto è permesso
06/03/20 17:09
alip1
Grazie Carlo.
Ho scaricato e provato il tuo progetto completo.
Premetto che ho spento il PC alle 16:30 di oggi 6-3-2020 e l'ho appena riacceso alle 18:00, scaricato il tuo progetto e provato per vedere l'ultima accensione ed ottengo questo risultato:

------ ULTIMA ACCENSIONE IN EVENTO N. 30902
29/02/2020 08:58:54
Microsoft-Windows-UserModePowerService
ID: 12
PC: ALNB02

come vedi già la data é errata e di conseguenza l'ora... sembrerebbe che faccia riferimento a quando é avvenuto l'ultimo aggiornamento .. ma non ne sono sicuro; certo non mi da la data di oggi e le ore 18:00 quando é stato accesso l'ultima volta...
Mi pare davvero un mistero... lascio a voi di risolvere questo strano mistero di windows 10...
Grazie per tutto e buon lavoro:nono:
aaa
06/03/20 17:42
alip1
Ciao Carlo volevo aggiornare te e quanti sono interessati ... provando e riprovando ho scoperto andando anche ad analizzare
Visualizzatore Eventi in strumenti di amministrazione di windows..

nel tuo progetto solo in button2 ho cambiato If EventoLogApp.Entries(i).InstanceId.ToString = 1 Then ed ora ho questo risultato dopo aver rispento e riaccesso il pc (ho un hp elitebook ):

------ ULTIMA ACCENSIONE IN EVENTO N. 32068
06/03/2020 18:35:31
Microsoft-Windows-Power-Troubleshooter
ID: 1
PC: ALNB02

aaa