Autor
|
Tema: Ejecutar VBScript en VB.NET "On The Fly" (Leído 12,139 veces)
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
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
|
|
|
En línea
|
|
|
|
|
KJD
Desconectado
Mensajes: 314
|
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
|
|
|
En línea
|
"Solo hay 10 tipos personas que saben leer binario, los que si y los que no"
"Keyboard not Found, press F1 To Continue" WTF???
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
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.-
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
Novlucker pero con WSH tengo que poner la ruta del script. O acaso puedo hacerlo en el aire tambien?
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
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 Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
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.
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
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.
|
|
|
En línea
|
|
|
|
elmaro
Desconectado
Mensajes: 301
Unas simples palabras...
|
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)
|
|
« Última modificación: 25 Marzo 2009, 18:06 pm por elmaro »
|
En línea
|
|
|
|
|
|