Что я хотел бы сделать
Я хотел бы создать простое приложение C #, которое создает объект Process
(дочерний процесс приложения), который запускает cmd.exe
и внутри этой оболочки выполните команду echo "Hello World!"
(или любую произвольную строку, указанную мной до компиляции приложения).Приложение C # при сборке и запуске создает и оставляет оболочку в этом состоянии:
![Desired Window](https://i.stack.imgur.com/AWTJI.jpg)
Попытки
Я искал stackoverflow и MSDN для примеров, но трудно найти правильные параметры для Process
, ProcessStartInfo
.В частности, я попытался:
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
/*
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "cmd.exe";
startInfo.Arguments = "echo helloworld!";
string strCmdText;
process.StartInfo = startInfo;
process.Start();
*/
var proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"cmd.exe", // iexplorer.exe opened up ie!
Arguments = "",
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = false,
WorkingDirectory = @"C:\Users\mtran\Desktop\ConsoleApp1",
WindowStyle = ProcessWindowStyle.Normal
}
};
proc.Start();
}
}
}
, но либо второе окно cmd (для дочернего процесса) никогда не появляется (если я установил RedirectStandardOutput = false
), либо вывод дочернего процесса записывается в cmd родителяокно.