Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Mad Antrax en 16 Abril 2014, 14:49



Título: [APORTE] [VBS] Añade una ventana Debug para tus scripts!
Publicado por: Mad Antrax en 16 Abril 2014, 14:49
Muy buenas a todos

Como está de moda programar en VBS, os dejo el siguiente aporte. Se trata de un pequeño script que permite añadir una ventana de "debug" para que podamos depurar y programar mejor cualquier script en VBS.

La idea la he sacado de stackoverflow, básicamente se trata de una pequeña función que crea una instancia de Internet Explorer en la que se irá añadiendo cualquier evento que nosotros queramos, con su TimeStamp. Para ello haremos lo siguiente:

Creamos un nuevo fichero que llamaremos debug.vbs con el siguiente código:

Código
  1. Dim oMIE
  2.  
  3. Function Debug(T)
  4. If Not IsObject( oMIE ) Then
  5. Set oMIE = CreateObject("InternetExplorer.Application")
  6. oMIE.Navigate "about:blank"
  7. oMIE.Visible = True
  8. oMIE.ToolBar = False
  9. oMIE.Width   = 1300
  10. oMIE.Height  = 250
  11. oMIE.Left    = 0
  12. oMIE.Top     = Eval(750 - 250)
  13. Do While oMIE.Busy
  14. WScript.Sleep 100
  15. Loop
  16. oMIE.Document.Title = "VBS Debug Window"
  17. oMIE.Document.Body.InnerHTML = "<b>" & WScript.ScriptName & "</b></br></br>"
  18. End If
  19. oMIE.Document.Body.InnerHTML = oMIE.Document.Body.InnerHTML & "<code>" & Now & " >> " & T & "</code><br>" & vbCrLf
  20. End Function

Éste fichero debug.vbs te servirá para cualquier futuro script VBS que quieras "debuggear". Luego, en cualquier proyecto VBS, solo tendremos que añadir las siguientes líneas al inicio del código:

Código
  1. Sub LoadDebug
  2.    Set FSO = CreateObject("Scripting.FileSystemObject")
  3.    Set objFile = FSO.OpenTextFile("debug.vbs")
  4. strCode = objFile.ReadAll
  5.    objFile.Close
  6.    ExecuteGlobal strCode
  7. Set objFile = Nothing
  8. Set FSO = Nothing
  9. End Sub
  10.  
  11. Call LoadDebug

Para llamar a la función Debug, añadiremos la siguiente línea:

Código
  1. Debug "ejemplo"

Así de sencillo, os dejo un ejemplo de código y se resultado con la ventana de Debug:

Código
  1. A = 100
  2. B = 5
  3.  
  4. C = A * B
  5.  
  6. Debug "C = " & C
  7.  
  8. Debug "My path is " & WScript.ScriptFullName
  9. Debug "Wait 2 seconds"
  10. WScript.Sleep 2000
  11.  
  12. V = "This is a example of string"
  13.  
  14. V = Replace(V,"i","X")
  15.  
  16. Debug "My replaced string: " & V
  17.  
  18. '.......
  19.  
  20.  
  21.  
  22. Debug "end >> WScript.Quit;"
  23. WScript.Quit

(http://i.imgur.com/sdbaLEf.png)

Saludos!!

PD: Hay programas y editores VBS que añaden debugger reales (por ejemplo VbsEdit http://www.vbsedit.com/) pero aquí les traigo algo hand-made, gratis y divertido.


Título: Re: [APORTE] [VBS] Añade una ventana Debug para tus scripts!
Publicado por: Eleкtro en 16 Abril 2014, 16:38
¿Un debugger casero y económico para VBS?, ¡simplemente me parece genial!

PD: Benditos gurús de SO que tienen tiempo para sacar estas ideas xD.


Título: Re: [APORTE] [VBS] Añade una ventana Debug para tus scripts!
Publicado por: JohnConnor en 28 Mayo 2014, 05:37
Exelente, la automatizacion esta de moda y vbs es perfecto para esto.
Mi ultimo proyecto es un entrono visual para VBS + HTA y esto le viene de 10!

Saludos