Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: iaorengo en 21 Noviembre 2011, 03:05 am



Título: Calcular el current time
Publicado por: iaorengo en 21 Noviembre 2011, 03:05 am
Buenas,

Estuve buscando por Google por más de 5 hs una solución o algo que me haga entender como hacer. Lo peor de todo es que considero esto como algo muy facil pero no me sale.

El tema es el siguiente, si bien se pueden calcular fechas del año de los picapiedras hasta los supersónicos con todos los chiches y muy facil, no encontré forma de calcular o contar desde 0 el "current time" o "uptime".
¿Cómo se puede hacer para comenzar en [00/00/00 - 00:00:00] y que cada 1 segundo me sume 1?

Para poder calcular el tiempo transcurrido. Lo más parecido a esto que encontré es un cronómetro, pero la verdad, es muy poco optimo y además, sólo cuenta hasta horas.

Espero me puedan ayudar y así además queda para todos los que lo necesitan.

Gracias y abrazo. :)


Título: Re: Calcular el current time
Publicado por: seba123neo en 21 Noviembre 2011, 03:14 am
el uptime se puede calcular con apis, aca un ejemplo simple.

Código
  1. Private Declare Function GetTickCount Lib "kernel32" () As Long
  2.  
  3. Private Sub Form_Load()
  4. MsgBox getTimePassed
  5. End Sub
  6.  
  7. Public Function getTimePassed() As String
  8. Dim lngHour As Long
  9. Dim lngMinute As Long
  10. Dim lngSeconds As Long
  11. lngHour = Int(GetTickCount / 1000 / 60 / 60)
  12. lngMinute = Int((GetTickCount / 1000 / 60)) - lngHour * 60
  13. lngSeconds = Int((GetTickCount / 1000)) - lngMinute * 60 - lngHour * 3600
  14. getTimePassed = Trim(Str(lngHour) & ":" & sGetWideTimeString(lngMinute) & ":" & sGetWideTimeString(lngSeconds)) & vbNullChar
  15. End Function
  16.  
  17. Public Function sGetWideTimeString(ByVal btInputNumb As Byte) As String
  18. Dim sTemp As String
  19. sTemp = Trim(Str(btInputNumb))
  20. If Len(sTemp) = 1 Then sTemp = "0" & sTemp
  21. sGetWideTimeString = sTemp
  22. End Function

saludos.


Título: Re: Calcular el current time
Publicado por: Elemental Code en 22 Noviembre 2011, 02:01 am
The sister checker al ataque!!

http://www.mediafire.com/?4m3z0xa0lwrqnsa

Muestra el tiempo desde que se prendio la pc.
Lo usaba para ver cuanto tiempo pasaba mi hermana en la pc.

No hace falta abrirlo al iniciar sesion o prender la pc. Al abrirlo te muestra el tiempo desde que se prendio.


Título: Re: Calcular el current time
Publicado por: iaorengo en 22 Noviembre 2011, 20:32 pm
Muchas gracias, ambos funcionan de 10!

Una sóla duda no más al respecto:
¿Cómo se lo reinicia? Porque tengan en cuenta que es para hacer el uptime de un servidor y, si bien espero que esté siempre on, algunas veces va a reiniciarce. :P


Saludos.


Título: Re: Calcular el current time
Publicado por: BlackZeroX en 22 Noviembre 2011, 20:36 pm
Se reinicia cuando reinicias el PC... claramente lo dijo Elemental Code

Dulces Lunas!¡.


Título: Re: Calcular el current time
Publicado por: raul338 en 22 Noviembre 2011, 22:32 pm
O cuando llegue al limite, que mas o menos eran a los 13 dias segun me acuerdo :P


Título: Re: Calcular el current time
Publicado por: iaorengo en 23 Noviembre 2011, 05:18 am
Ah... entonces creo que no me va a servir.

Yo quiero simplemente un contador de Horas:Minutos:Segundos. No tiene nada que ver con el arranque de la PC o sesión. Y que se pueda reinciar cuando lo desee.


Título: Re: Calcular el current time
Publicado por: Sanlegas en 23 Noviembre 2011, 10:10 am
Lo puedes modificar para que se reestablesca

Código
  1. Private Declare Function GetTickCount Lib "kernel32" () As Long
  2.  
  3. Dim acTime  As Long
  4.  
  5. Public Function getTimePassed() As String
  6. Dim timeActual As Long
  7. Dim lngHour As Long
  8. Dim lngMinute As Long
  9. Dim lngSeconds As Long
  10.  
  11. timeActual = GetTickCount - acTime
  12.  
  13. lngHour = Int(timeActual / 1000 / 60 / 60)
  14. lngMinute = Int((timeActual / 1000 / 60)) - lngHour * 60
  15. lngSeconds = Int((timeActual / 1000)) - lngMinute * 60 - lngHour * 3600
  16. getTimePassed = Trim(Str(lngHour) & ":" & sGetWideTimeString(lngMinute) & ":" & sGetWideTimeString(lngSeconds)) & vbNullChar
  17. End Function
  18.  
  19. Public Function sGetWideTimeString(ByVal btInputNumb As Byte) As String
  20. Dim sTemp As String
  21. sTemp = Trim(Str(btInputNumb))
  22. If Len(sTemp) = 1 Then sTemp = "0" & sTemp
  23. sGetWideTimeString = sTemp
  24. End Function
  25.  
  26. Public Function Reset()
  27. acTime = GetTickCount
  28. End Function
  29.  

En un formulario:
Código
  1. Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
  2.  
  3. Private Sub Form_Load()
  4. MsgBox getTimePassed
  5. Module1.Reset
  6. MsgBox getTimePassed
  7. Sleep 3000
  8. MsgBox getTimePassed
  9. Module1.Reset
  10. MsgBox getTimePassed
  11. End Sub
  12.  


Título: Re: Calcular el current time
Publicado por: Elemental Code en 24 Noviembre 2011, 00:23 am
Pone un timer con interval de 1000

Código
  1. Dim xd As Date
  2.  
  3. Private Sub Form_Load()
  4. xd = 0
  5. 'me evade la razon, pero arranca a las 12:00:00
  6. End Sub
  7.  
  8. Private Sub Timer1_Timer()
  9. xd = xd + "00:00:01"
  10. Debug.Print xd
  11. End Sub

 ;-) ;-)

RUSTICO!


Título: Re: Calcular el current time
Publicado por: seba123neo en 25 Noviembre 2011, 02:52 am
Ah... entonces creo que no me va a servir.

Yo quiero simplemente un contador de Horas:Minutos:Segundos. No tiene nada que ver con el arranque de la PC o sesión. Y que se pueda reinciar cuando lo desee.

dijiste "uptime", eso significa desde que inicio la pc...

usa un Timer comun o si queres hacerlo mas copado, con las api de Timers.