Newsgroup: it.comp.lang.visual-basic
Titolo: Tempo dal caricamento di Windows

Come si fa a determinare in VB5 da quanto tempo è stato caricato Windows?
Grazie anticipatamente.
Ciao!
----
Sigi  (My Nickname)
Marco Sigismondi  (My Real Name)
sigi.o...@iol.it
  (My E-Mail)
11876249 (My ICQ #)
--
Sigi™ is a ® of SigiCorporation ltd.
© 1998, SigiProgram & SigiComputer
----

 
con questa API:
Declare Function GetTickCount Lib "kernel32" Alias "GetTickCount" () As Long
Torna il nr di millisecondi da quando e' stato eseguito windows.
Haime', si resetta dopo 49.71 giorni perenne accensione.
-- 
Hi, Ciao
Ettore                 By -MES-
http://www.aspide.it/freeweb/ilmes
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb
 
 

Haime', si resetta dopo 49.71 giorni perenne accensione.
E' un altro bug di Winzozz? ;-)


...


>>Torna il nr di millisecondi da quando e' stato eseguito windows.
Quale funzione devo utilizzare per convertire i millisecondi in hh:mm:ss?
Grazie... E-mail: 
d...@iol.it


La funzione che ognuno di noi ha nel cervello da quando impara a leggere le
ore:
1h = 60m
1m = 60s
1s = 1000ms
--
Roal Zanazzi
z...@iol.it


Per la precisione:
Le variabili di tipo Long (a intero lungo) sono memorizzate come numeri con
segno a 32 bit (4 byte) compresi nell'intervallo fra -2.147.483.648 e
2.147.483.647.
In realta' il valore di ritorno di GetTickCount() e' un DWORD (intero a 32
bit SENZA segno), che ha un intervallo tra 0 e  4294967295.
Inoltre, la "risoluzione" della risposta non e' precisa al millisecondo,
poiche' i timer di Windows hanno una risoluzione minima di 55 millisecondi.
Ma per molte attivita' (io la uso per cronometrare il tempo di esecuzione
delle funzioni per profiling) va piu' che bene.
Tanto per finire in bellezza:
non mi risulta che un sistema con Windows95 riesca a stare attivo per 49.71
giorni senza impiantarsi (anche da solo, senza intervento esterno).
--
Roal Zanazzi
z...@iol.it


Pensa!?! Quando ai tempi mi insegnarono a leggere le ore mi insegnarono
addirittura la funzione esatta in VB5...
Comunque l'avevo chiesto perche ho provato a convertire il valore di ritorno
dell'api GetTickCount() con Format ottenendo valori non proprio precisi.
Come, quindi, ottenere il tempo in 'hh:mm:ss?

...

Daaaiii, Stai scherzando vero?
Esempietto:
Crea un nuovo progetto, aggiungi una bella Label dentro il form (abbastanza lunga)
e copia questo nel codice del form.
Private Declare Function GetTickCount Lib "kernel32" () As Long
Private Sub Form_Load()
    Dim Giorni%, Ore%, Minuti%, Secondi%, mSec%, Ticks&
    Me.Show
    Do
        Ticks = GetTickCount()
 
        Giorni = Int(Ticks / (24& * 60& * 60& * 1000&))
        Ticks = Ticks Mod (24& * 60& * 60& * 1000&)
        Ore = Int(Ticks / (60& * 60& * 1000&))
        Ticks = Ticks Mod (60& * 60& * 1000&)
        Minuti = Int(Ticks / (60& * 1000&))
        Ticks = Ticks Mod (60& * 1000&)
        Secondi = Int(Ticks / 1000&)
        mSec = Ticks Mod 1000&
 
        Label1 = Giorni & " " & Format$(Ore, "00") & ":" & Format$(Minuti, "00") & ":" & Format$(Secondi, "00") & " " & mSec
        If DoEvents() = 0 Then Exit Do
    Loop
End Sub
Attento che Ticks e' un Long con segno, e quando i girni di perenne accensione sono > di 24,855 il valore
diventa negativo, e questa funzione non funziona piu'!
Se ti bastano 24,855 gg (poi ricomincia da 0) allora sostituisci la linea
        Ticks = GetTickCount()
con
        Ticks = GetTickCount() And &H7FFFFFFF
Salutoni,
-- 
Hi, Ciao
Ettore                 By -MES-
http://freeweb.aspide.it/freeweb/ilmes
