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
Cree el objecto FileSystemObject, o el que desee utilizar.. y listo! ;D
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
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.-
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
Novlucker pero con WSH tengo que poner la ruta del script. O acaso puedo hacerlo en el aire tambien?
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
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.
Bueno tengo este código de ejemplo. El inconveniente ahora es como recuperar los datos.
Imports IWshRuntimeLibrary
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.
Listo. Solucionado.
Dejo el codigo
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)
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
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