如何在C#应用程序中调用VBScript文件?

bal*_*log 34 .net c# asp.net vbscript .net-2.0

我需要在我的C#Windows应用程序中调用VBScript文件(.vbs文件扩展名).我怎样才能做到这一点?

在Visual Studio中有一个用于访问VBScript文件的加载项.但我需要在后面的代码中访问脚本.这该怎么做?

Ily*_*tov 62

以下代码将执行VBScript脚本,没有提示或错误,也没有shell徽标.

System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");
Run Code Online (Sandbox Code Playgroud)

一种更复杂的技术是使用:

Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript"; 
scriptProc.StartInfo.WorkingDirectory = @"c:\scripts\"; //<---very important 
scriptProc.StartInfo.Arguments ="//B //Nologo vbscript.vbs";
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
scriptProc.Start();
scriptProc.WaitForExit(); // <-- Optional if you want program running until your script exit
scriptProc.Close();
Run Code Online (Sandbox Code Playgroud)

使用这些StartInfo属性可以非常精细地访问流程设置.

如果希望脚本程序显示窗口等,则需要使用Windows脚本宿主.您也可以尝试直接执行cscript,但在某些系统上它只会启动编辑器:)

  • 是.默认情况下,程序将在不等待进程结束的情况下运行.但是,System.Diagnostics.Process.Start().WaitForExit()将强制调用程序等待进程结束. (7认同)

qxo*_*otk 5

另一种方法是创建一个 VB.NET 类库项目,将您的 VBScript 代码复制到一个 VB.NET 类文件中,然后从您的 C# 程序中引用 VB.NET 类库。

您需要修正 VBScript 和 VB.NET 之间的任何差异(应该很少)。

这里的优点是您将在进程中运行代码。