我正在尝试从显示控制台的c#控制台应用程序创建子进程。我尝试了以下但没有窗口出现。
public static bool IsValidPattern(string str)
{
return Regex.IsMatch(str, @"\?\+[a-zA-Z]\+$");
}
答案 0 :(得分:0)
在父控制台中运行子进程的正确方法是设置UseShellExecute
类的ProcessStartInfo
属性。让我们考虑一个执行时间命令的例子。为何时间?因为它从标准输入读取。这样您就可以知道它使用的是哪个控制台。
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();
}
}
}