C# 子进程窗口未出现
我试图从显示控制台的c#控制台应用程序创建一个子进程。我尝试了以下操作,但没有出现窗口C# 子进程窗口未出现,c#,child-process,C#,Child Process,我试图从显示控制台的c#控制台应用程序创建一个子进程。我尝试了以下操作,但没有出现窗口 ProcessStartInfo = new ProcessStartInfo(name) { UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true, WindowSt
ProcessStartInfo = new ProcessStartInfo(name)
{
UseShellExecute = false,
RedirectStandardError = true,
RedirectStandardOutput = true,
WindowStyle = ProcessWindowStyle.Maximized,
CreateNoWindow = false,
ErrorDialog = false
};
if (args != null)
{
ProcessStartInfo.Arguments = args;
}
if (workingDirectory != null)
{
ProcessStartInfo.WorkingDirectory = workingDirectory;
}
Process = new Process {EnableRaisingEvents = true, StartInfo = ProcessStartInfo};
Process.Start();
在父级控制台中运行子进程的正确方法是设置
ProcessStartInfo
类的UseShellExecute
属性。让我们考虑一个执行时间命令的例子。为什么是时间?因为它是从标准输入读取的。这样,您将知道它使用哪个控制台
public class Program
{
public static void Main(string[] args)
{
var processInfo = new ProcessStartInfo
{
FileName = "cmd.exe",
Arguments = "/c time"
};
Console.WriteLine("Starting child process...");
using (var process = Process.Start(processInfo))
{
process.WaitForExit();
}
}
}
我们保留了默认值UseShellExecute
,即true
。这意味着一个shell将用于子进程。使用shell意味着将创建一个新的控制台
让我们将UseShellExecute
的值翻转为false
public class Program
{
public static void Main(string[] args)
{
var processInfo = new ProcessStartInfo
{
UseShellExecute = false, // change value to false
FileName = "cmd.exe",
Arguments = "/c time"
};
Console.WriteLine("Starting child process...");
using (var process = Process.Start(processInfo))
{
process.WaitForExit();
}
}
}
name
、args
和workingDirectory
的值是什么?该名称是子控制台应用程序(MyApp.exe)的名称。对于本次讨论,args和workingDirectory都为空。只要进行少量更改以删除输出重定向,我就可以显示窗口。谢谢你的帮助