2010-03-09 18 views
5

Ist es möglich, ein bestimmtes Unterverzeichnis in einer VBS-Datei aus einer C# -Anwendung auszuführen?Ausführen eines VBS Sub aus C#

Ich habe versucht, einen Prozess zu erstellen und ihn dann zu starten, kann aber keine Möglichkeit finden, anzugeben, welches bestimmte Unterverzeichnis in der Skriptdatei ausgeführt werden soll. Gibt es eine Möglichkeit, dies zu spezifizieren, oder gibt es einen besseren Weg, dies zu tun?

Ein Vbs könnte so aussehen wie das folgende Beispiel. Was ich will, ist aus dem C# -Code, um entweder Test1 oder Test2 zu starten.

Public Sub test1 
    msgbox "Hey1" 
End Sub 

Public Sub test2 
    msgbox "Hey2" 
End Sub 

Antwort

1

Wenn Visual Basic (ohne .Net) verwendete ich die Script Control dafür.

This page enthält einige Dokumentation, wie man es von gutem alten VB nennt.

Syntax sieht wie folgt aus:

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

Edit (nach Kommentar zu lesen): Wenn Sie brauchen nicht die VBScript in Ihrem Kontext laufen (wenn Sie Objekte nicht teilen), Sie könnte eine kleine Anwendung erstellen, die das Skript out-of-process ausführt. Ihre Haupt-App ist 64 Bit, die Hilfs-App ist 32 Bit. Sie können weiterhin einfache Parameter übergeben.

+0

Danke an GvS und Christian für den Tipp über das Scriptcontrol, allerdings scheint das bei 64bit Windows 7 leider nicht zu funktionieren. Wenn ich das Ziel als x86 setze läuft die Applikation gut und das Script wird ausgeführt, aber sobald ich wechseln Sie es zu Any CPU oder x64 es kann das COM-Objekt nicht importieren. Googeling für es bringt eine Reihe von Posts über das MSScriptControl, das nicht in einer 64-Bit-Umgebung funktioniert. Einstellung der Anwendung zu 32bit ist keine Option, sollte die Anwendung im x64-Modus auf einem 64bit os laufen, so dass ich Angst habe, dass die Verwendung des ScriptControl für mich nicht funktioniert. Irgendwelche anderen Ideen? – Mikael

1

Sie verwenden die Windows Script Control COM-Komponente und rufen Sie die Methode Run auf. Hier ist eine nützliche link with code examples.