Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: elmaro en 19 Marzo 2009, 21:21 pm



Título: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: elmaro en 19 Marzo 2009, 21:21 pm
Buenas a todos.
Ese es mi problema, ejecutar un vbscript en vb.net al vuelo.

Se puede hacer mediante archivos temporales, pero lo que a mi me interesa es crear una función en vbscript y poder ejecutarla desde mi aplicación, obviamente recuperando el resultado de esa función.

Si alguno me puede ayudar se lo agradecería.

Saludos


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: Mr. Crowley en 20 Marzo 2009, 00:05 am
Cree el objecto FileSystemObject, o el que desee utilizar.. y listo!  ;D


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: KJD en 20 Marzo 2009, 12:43 pm
No conozco mucho de VBscript, pero en VB.net tenes la clase VBCodeProvider que te permite compilar y ejecutar codigo dinamicamente, osea en memoria si generar exe ni dll.

En este link tenes ejemplos en c#, pero podes pasarlo a vb facilmente solo recorda usar VBCodeProvider en vez de CSahrpCodeProvider.


http://www.codeproject.com/KB/dotnet/DynamicCompileAndRun.aspx


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: elmaro en 20 Marzo 2009, 14:42 pm
KJD muchas gracias por el link. Entre hoy y el lunes voy a estar haciendo pruebas con el tema.
En cuanto tenga noticias posteo los resultados.

Gracias.-


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: Novlucker en 20 Marzo 2009, 15:06 pm
Ahora no tengo el .NET en la pc, pero revisa si entre los objetos que se pueden agregar no hay uno de nombre "Windows Script Host Object Model" o similar, con eso debería de bastar  :P

Saludos


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: elmaro en 20 Marzo 2009, 16:11 pm
Novlucker pero con WSH tengo que poner la ruta del script. O acaso puedo hacerlo en el aire tambien?



Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: Novlucker en 20 Marzo 2009, 16:17 pm
WSH es Windows Script Host, comprende VBS, JS y WMI, y solo tienes que incrustar el code del vbs en tu código VB y ya, no se crea ningún archivo  :P

Saludos


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: elmaro en 20 Marzo 2009, 16:29 pm
Novluckers te comento que es lo que quiero hacer.

Mi aplicación utiliza sus propias variables. Una de las opciones es asignarle valores a esas variables.
Lo que quiero hacer es que el usuario escriba una función en VBS (la cual se guarda en una DB) y llegado el momento de usar esa variable que mi aplicación ejecute esa función escrita por el usuario y obtenga el retorno de la misma.
Me explico? Maso o menos es así la cosa.


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: elmaro en 20 Marzo 2009, 18:11 pm
Bueno tengo este código de ejemplo. El inconveniente ahora es como recuperar los datos.

Código:
Imports IWshRuntimeLibrary

Código:
Dim host As New MSScriptControl.ScriptControlClass
Dim Cod As String

host.Language = "VBScript"

Cod = "Function Test(nombre)" & vbCr
Cod += "getname= mid(nombre,1,instr(nombre,""|"")-1)" & vbCr
Cod += '"Msgbox(getname)" & vbCr
Cod += "End Function"

host.AddCode(Cod)
host.Run("Test", "mariano|malomo")

Así me devuelve un resultado en un msgbox de vbs. Pero quiero que lo devuelva a una variable así puedo utilizar ese resultado.
Sigo investigando.



Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: elmaro en 20 Marzo 2009, 19:16 pm
Listo. Solucionado.
Dejo el codigo

   
Código:
Dim host As New MSScriptControl.ScriptControlClass
        Dim Cod As String
        Dim ret As String

        host.Language = "VBScript"

        Cod = "Function Test(nombre)" & vbCr
        Cod += "getname= mid(nombre,1,instr(nombre,""|"")-1)" & vbCr
        Cod += "Test = getname" & vbCr '"Msgbox(getname)" & vbCr
        Cod += "end function"

        host.AddCode(Cod)
        ret = host.Run("Test", "mariano|malomo")

        MsgBox(ret)


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: Novlucker en 20 Marzo 2009, 19:58 pm
La verdad me había quedado pensando, no tenía idea, el código y la manera de hacerlo me ha parecido muy sencilla he interesante y he aprendido algo nuevo  :P

Saludos


Título: Re: Ejecutar VBScript en VB.NET "On The Fly"
Publicado por: 70N1 en 19 Febrero 2010, 21:52 pm
Hola gente.
Estoy usando ese codigo para un pequeño proyecto personal....
alomejor ustedes saveis a que se deve este problema.

Me tira el error de que falta el objeto wscript