当我开始一个新的过程时,如果我使用这个过程,会有什么不同? WindowStyle = hidden 或者 CreateNoWindow = true ProcessStartInfo类的属性?
我试图在C#中执行批处理文件,但我没有得到任何好运。 我在互联网上发现了多个例子,但它不适合我。 public void ExecuteCommand(string command) { int ExitCode; ProcessStartInfo ProcessInfo; Process Process; ProcessInfo = new ProcessStartInfo("cmd.exe", "/c " + command); ProcessInfo.CreateNoWindow = true; ProcessInfo.UseShellExecute = false; Process = Process.Start(ProcessInfo); Process.WaitForExit(); ExitCode = Process.ExitCode; Process.Close(); MessageBox.Show("ExitCode: " + ExitCode.ToString(), "ExecuteCommand"); } 命令字符串包含批处理文件的名称(存储在system32中)以及它应该处理的一些文件。 (例如:txtmanipulator file1.txt file2.txt file3.txt)当我手动执行批处理文件,它能正常工作。 当执行代码时,它给了我一个ExitCode:1 (捕获所有的一般错误) 我究竟做错了什么?
我有以下代码: info = new System.Diagnostics.ProcessStartInfo("TheProgram.exe", String.Join(" ", args)); info.CreateNoWindow = true; info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; info.RedirectStandardOutput = true; info.UseShellExecute = false; System.Diagnostics.Process p = System.Diagnostics.Process.Start(info); p.WaitForExit(); Console.WriteLine(p.StandardOutput.ReadToEnd()); //need the StandardOutput contents 我知道从我开始的过程的输出是大约7MB长。 在Windows控制台中运行它工作正常。 不幸的是,在编程上这无限期地挂在WaitForExit上。 还要注意这个代码不会挂起较小的输出(如3KB)。 ProcessStartInfo中的内部StandardOutput是否有可能无法缓冲7MB? 如果是这样,我该怎么做呢? 如果没有,我做错了什么?