代码之家  ›  专栏  ›  技术社区  ›  Tom A RRUZ

有关从vbscript返回值到.NET的问题

  •  0
  • Tom A RRUZ  · 技术社区  · 14 年前

    我正在尝试设置一个能够从.NET运行vbscript文件的应用程序(请参见 here ,并且大部分都设置得很好,但是我想测试一下,所以我需要能够从我的vb脚本返回数据。我发现可以使用wscript.quit([errorcode])返回整数值,但是返回字符串呢?是否可以将它们发送给数据接收程序?或者我需要看一个不同的方法吗?谢谢。

    1 回复  |  直到 14 年前
        1
  •  2
  •   AlexCuse    14 年前

    您可以写入标准输出(这将把它重定向到事件处理程序)。我相信vbscript,这是wscript.stdout。

    如果你写了多行,你可以考虑使用类似于一个特写员的东西来捕捉它们,即

            var p = new Process()
            {
                StartInfo = new ProcessStartInfo("netstat")
                {
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    UseShellExecute = false,
                }
            };
    
            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.Start();
            p.BeginOutputReadLine();
            p.BeginErrorReadLine();     
            p.WaitForExit();
    
            if (p.ExitCode == 0)
            {
                Console.WriteLine(outputWriter.GetStringBuilder().ToString());
            }
            else
            {
                Console.WriteLine("Process failed with error code {0}\nMessage Was:\n{1}", p.ExitCode
                    , errorWriter.GetStringBuilder().ToString());
            }