2010-03-09 25 views
5

¿Es posible ejecutar un sub específico en un archivo vbs desde una aplicación C#?Ejecutando un vbs Sub desde C#

He tratado de crear un proceso y luego iniciarlo, pero no puedo encontrar una manera de especificar qué sub particular en el archivo de script se debe ejecutar. ¿Hay alguna manera de especificar esto o hay una mejor manera de hacerlo?

A vbs podría parecerse a la muestra siguiente. Lo que quiero es del código C# para iniciar test1 o test2.

Public Sub test1 
    msgbox "Hey1" 
End Sub 

Public Sub test2 
    msgbox "Hey2" 
End Sub 

Respuesta

1

Cuando se utiliza Visual Basic (sin el .Net) que utiliza el Script Control para esto.

This page contiene algo de documentación sobre cómo llamarlo desde el antiguo VB.

sintaxis es como la siguiente:

Result = ScriptControl.Run("Name", arg1, arg2, ... argn) 

Editar (después de leer comentarios): Si usted no necesita el VBScript para funcionar en su contexto (si usted no comparte objetos), se podría crear una pequeña aplicación que ejecute el script fuera de proceso. Su aplicación principal es de 64 bits, la aplicación de ayuda es de 32 bits. Aún puede pasar parámetros simples.

+0

Gracias a GvS y Christian por la sugerencia sobre el scriptcontrol, pero desafortunadamente no parece funcionar en Windows 7 de 64 bits. Si configuro el destino como x86 la aplicación funciona bien y se ejecuta el script, pero tan pronto como cambiarlo a Cualquier CPU o x64 no puede importar el objeto COM. Googeling para él abre una serie de publicaciones acerca de que MSScriptControl no funciona en un entorno de 64 bits. Establecer la aplicación para ser de 32 bits no es una opción, la aplicación debe ejecutarse en modo x64 en un sistema operativo de 64 bits, así que me temo que el uso de ScriptControl no funciona para mí. ¿Alguna otra idea? – Mikael

1

Utiliza el componente COM de Windows Script Control y llama al método Run. Aquí hay un útil link with code examples.