通过VB脚本进行操作控制

时间:2017-08-30 08:59:14

标签: c# winforms vbscript controls

我有一个.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脚本显示结果。因此,我不知何故需要将控制传递给它。

我该怎么做?

我还没有找到解决方案,我希望你能给我一个提示。

1 个答案:

答案 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#代码中进一步处理。不是我在开始时寻找的东西,但我认为我可以使用它。

只需一个值就可以了。对于一组值,我必须解析它们才能正确使用它。

感谢。