【问题标题】:Question on returning values from VBScript to .NET关于将值从 VBScript 返回到 .NET 的问题
【发布时间】:2010-06-08 03:01:45
【问题描述】:

我正在尝试设置一个能够从 .NET 运行 VBScript 文件的应用程序(请参阅 here),并且大部分设置都很好,但我想对此进行测试,所以我需要能够从我的 VBScripts 返回数据。我发现我可以使用 WScript.Quit([ErrorCode]) 来取回一个整数值,但是返回字符串呢?是否可以将它们提供给 DataReceivedEventHandler?还是我需要看看不同的方法?谢谢。

【问题讨论】:

    标签: c# vbscript console


    【解决方案1】:

    您可以写入标准输出(这会将其重定向到事件处理程序)。我相信 VBScript 这是 WScript.Stdout。

    如果你写了多行,你可以考虑使用类似 StringWriter 的东西来捕获它们,即

            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());
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-13
      • 2011-07-04
      • 1970-01-01
      • 2017-03-10
      • 2021-03-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多