我有一个.net C#Winforms项目,工作正常。
我想要做的是创建一个执行VB脚本的进程。我已经用以下代码完成了这个:
string ScriptName = "myScript.vbs";
Process ScriptProcess = new Process();
ScriptProcess.StartInfo.FileName = @ScriptName;
ScriptProcess.StartInfo.WorkingDirectory = @"C:\scripts\";
ScriptProcess.StartInfo.Arguments = string.Format("\"{0}\" \"{1}\"","Arg1","Arg2");
ScriptProcess.Start();
ScriptProcess.WaitForExit();
ScriptProcess.Close();
参数传递给' myScript.vbs'并加工。但是我想操纵例如我的c#Winform中的标签,通过使用此vbs脚本显示结果。因此,我不知何故需要将控制传递给它。
我该怎么做?
我还没有找到解决方案,我希望你能给我一个提示。
答案 0 :(得分:0)
好的,我写了一个解决方案: C#代码:
def self.store(params)
(params.is_a?(Array) ? params : [params]).each {|single_hash| }
end
我的vb脚本看起来一样,我只是发布它的重要部分: @STLDeveloper代码很好。
Process p = new Process();
p.StartInfo = new ProcessStartInfo("cscript");
p.startInfo.UseShellExecute = false;
p.startInfo.RedirectStandardOutput= true;
p.startInfo.RedirectStandardError= true;
var outputWriter = new StringWriter();
p.OutputDataReceived += (sender, args) => outputWriter.WriteLine(args.Data);
var errorWriter = new StringWriter();
p.ErrorDataReceived += (sender, args) => errorWriter.WriteLine(args.Data)
p.StartInfo.Arguments = string.Format("//Nologo C:\\scripts\myscript.vbs "\"{0} \"{1}"",x,y);
OutputWriter.NewLine ="";
errorWriter.NewLine ="";
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();
//Just to see output and errors coming back.
Console.WriteLine(outputWriter.GetStringBuilder().ToString());
Console.WriteLine(errorWriter.GetStringBuilder().ToString());
p.Close();
p.Dispose();
我想提一下,链接中的代码(由Smartis发布)我遇到了困难。
但是现在我可以传递参数并获得一个输出/结果,我将在c#代码中进一步处理。不是我在开始时寻找的东西,但我认为我可以使用它。
只需一个值就可以了。对于一组值,我必须解析它们才能正确使用它。
感谢。