Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Novlucker en 27 Junio 2008, 22:42 pm



Título: Cronometro en VBS :p
Publicado por: Novlucker en 27 Junio 2008, 22:42 pm
Buenas...

Simplemente la idea se me ha ocurrido al ver el mensaje (http://foro.elhacker.net/scripting/cronometro_en_batch-t216070.0.html) de Dirpok, en el que se intenta crear un cronometro en batch....pero como a mi me gusta más vbscript, porque me parece que da más posibilidades, he creado el mio en este lenguaje  ;D

El cronometro pide un nombre de usuario, sin el que no se pude comenzar, luego de eso queda a la espera de que se presione aceptar en un mensaje, una vez que se acepta, comienza el conteo  :P, al terminar avisa de cuanto tiempo se ha demorado (igualmente lo va haciendo a medida que van pasando los segundos)
Al dar aceptar nuevamente termina de contar, y guarde registro de la fecha y hora actual, así como el usuario, y su tiempo en un registro (C:\ranking.txt), y abre el archivo que contiene el ranking para que pueda verse  :P

A ver que les parece....

Código
  1. set objshell = createobject("wscript.shell")
  2. set objfso = createobject("scripting.filesystemobject")
  3. set ranking = objfso.opentextfile("C:\ranking.txt",8,true)
  4. do
  5. usuario = inputbox("Ingresa tu nombre por favor...")
  6. if usuario <> "" then
  7. exit do
  8. else
  9. msgbox "Debes de ingresar un nombre de usuario para continuar..."
  10. end if
  11. loop
  12. msgbox "Presiona aceptar para comenzar el conteo..."
  13. empieza = time()
  14. mensaje = -1
  15. do while mensaje = -1
  16. tiempo = datediff("s",empieza,time())
  17. mensaje =  objshell.popup(tiempo,1,"Cronometro")
  18. loop
  19.  
  20. ranking.writeline now() & chr(9) & usuario & chr(9) & "...." & tiempo & "seg."
  21. ranking.close
  22.  
  23. msgbox "El tiempo insumido a sido de " & tiempo & " segundos"
  24. objshell.run "C:\ranking.txt"

Creo que me ha quedado bastante bien  :rolleyes:

Mensaje original de donde saqué la idea

Cronometro en BATCH (http://foro.elhacker.net/scripting/cronometro_en_batch-t216070.0.html)

Saludos


Título: Re: Cronometro en VBS :p
Publicado por: leogtz en 27 Junio 2008, 23:10 pm
Jeje, te ha quedado muy bien  :D

Esta muy bien, solo que el beep standard de Windows es muy molesto luego de unos segundos.

Saludos!


Título: Re: Cronometro en VBS :p
Publicado por: Novlucker en 28 Junio 2008, 01:21 am
Es que es el efecto de los segundo que pasan  :xD

Se puede reducir a un simple contador en pantalla con un code como este..

Código
  1. set objshell = createobject("wscript.shell")
  2. msgbox "Presiona aceptar para comenzar el conteo..."
  3. empieza = time()
  4. do
  5. tiempo = datediff("s",empieza,time())
  6. wscript.echo tiempo
  7. wscript.sleep 1000
  8. loop

Con este code solo salta un mensaje en pantalla cada vez que le damos a aceptar, pero no se ve el efecto del tiempo pasando, y no se puede detener de ninguna manera  :xD (solo matando el proceso), o bien, se pude lanzar desde ms-dos invocando cscript del siguiente modo

Código:
cscript nombrequeledieron.vbs

En este caso comenzara a mostrar los numeros en la consola y se detendrá hasta bien no se pulse ^C, pero claro, no creará ningún tipo de registro.
Tiene la ventaja sobre batch, que el sleep de vbs si está desde win 98 en cualquier sistema, y además, vbs te permite utilizar funciones especificas de fecha y hora para poder marcar los tiempos sin errores  ;)

Saludos


Título: Re: Cronometro en VBS :p
Publicado por: carlitos.dll en 28 Junio 2008, 01:50 am
Te felicito Novlucker, está muy bueno, lo que si, crítica constructiva, podría ejecutarse el txt en alguna carpeta temporal, porque en cuenta limitada, al no tener acceso a los directorios raíz, arroja error.

Por cierto, a mí no me sonó el beep, porque tengo la siguiente llave en el registro:

[HKEY_CURRENT_USER\Control Panel\Sound]
"Beep"="no"
"ExtendedSounds"="no"


Título: Re: Cronometro en VBS :p
Publicado por: Novlucker en 28 Junio 2008, 02:05 am
Citar
Te felicito Novlucker, está muy bueno, lo que si, crítica constructiva, podría ejecutarse el txt en alguna carpeta temporal, porque en cuenta limitada, al no tener acceso a los directorios raíz, arroja error.

Muchas gracias carlitos.dll, y lo de la critica, toda critica constructiva es bienvenida, es más, yo tampoco pude ejecutarlo por el tema de los directorios raiz, y use el disco D:\ que era de una partición con acceso total (hice el script en el trabajo, en un momento de ocio  :rolleyes:), pero puse esa ruta, para que fuera fácil de identificar, con cambiarla basta, y de querer que vaya a la carpeta temporal, basta modificar un par de líneas.....

Código
  1. set ranking = objfso.opentextfile("C:\ranking.txt",8,true)
Por esto......
Código
  1. set ranking = objfso.opentextfile(objfso.getspecialfolder(2) & "\ranking.txt",8,true)
Y... esto....
Código
  1. objshell.run "C:\ranking.txt"
Por esto otro.....
Código
  1. objshell.run objfso.getspecialfolder(2) & "\ranking.txt"

 ;D

Saludos