2010-06-07 36 views
0

我試圖設置一個能夠從.NET運行VBScript文件的應用程序(見here),並且它的大部分設置都很好,但我想測試一下,所以我需要能夠從我的VBScripts返回數據。我發現我可以使用WScript.Quit([ErrorCode])取回整數值,但返回字符串又怎麼樣?是否有可能將它們提供給DataReceivedEventHandler?或者我需要看一個不同的方法?謝謝。關於從VBScript返回值到.NET的問題

回答

2

您可以寫入標準輸出(將其重定向到事件處理程序)。我相信在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()); 
     }