我正在尝试使用process.start()从控制台应用程序启动记事本。记事本也是打开的,但它是在后台。一旦我关闭我的控制台应用程序它启动。 以下是我的代码。我试过在主线程和单独的线程中打开它。 建议我以交互模式打开记事本或其他程序而不被阻止的方法。
请帮助我
static void RunApplication()
{
Process proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = @"C:\Windows\system32\cmd.exe",
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
RedirectStandardInput = true,
},
};
proc.OutputDataReceived += App_OutputDataReceived;
proc.ErrorDataReceived += App_ErrorDataReceived;
proc.Start();
proc.BeginErrorReadLine();
proc.BeginOutputReadLine();
RunCommand(proc, @"C:");
RunCommand(proc, @"notepad.exe");
Thread.Sleep(10000);
}
static void RunCommand(Process p, string command)
{
p.StandardInput.WriteLine(command);
p.StandardInput.Flush();
}
static void App_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
//OutPutReceivedFromThread += e.Data + "\r\n";
Console.WriteLine(e.Data + "\r\n");
}
static void App_ErrorDataReceived(object sender, DataReceivedEventArgs e)
{
//OutPutReceivedFromThread += e.Data + "\r\n";
Console.WriteLine(e.Data + "\r\n");
}
答案 0 :(得分:0)
我认为这里的问题是你试图太复杂,或者上面的例子没有正确说明你的问题。
即。您可以使用以下代码运行记事本
static void Main(string[] args)
{
Process.Start("notepad.exe");
}
因此,除非您需要将许多控制台代码行发送到您打开的控制台,或者您需要读取控制台流,然后尝试soemthing非常简单。希望这会有所帮助。