C# WPF cmd.exe进程立即关闭
在我的WPF应用程序中,我试图通过System.Diagnostics.Process打开cmd.exe,但每次它点击Process.Start()时,它都会立即关闭,我无法向它写入任何其他内容。但是,如果调用static Process.Start(),它将保持打开状态,但是我不确定如何写入它。见下文C# WPF cmd.exe进程立即关闭,c#,wpf,C#,Wpf,在我的WPF应用程序中,我试图通过System.Diagnostics.Process打开cmd.exe,但每次它点击Process.Start()时,它都会立即关闭,我无法向它写入任何其他内容。但是,如果调用static Process.Start(),它将保持打开状态,但是我不确定如何写入它。见下文 var processInfo = new ProcessStartInfo("cmd.exe") { UseShellExecute =
var processInfo = new ProcessStartInfo("cmd.exe")
{
UseShellExecute = false,
RedirectStandardInput = true,
};
var process = new Process()
{
StartInfo = processInfo,
};
process.Start(); // This close immediately and not work
Process.Start("cmd.exe"); // This will work but can't write to it
process.StandardInput.WriteLine(someText);
process.StandardInput.WriteLine(moreText);
用于等待cmd
process.WaitForExit();
我做了一些研究,发现解决方案是可行的。不确定这是否是最好的方法,但它对我有效
[DllImport("kernel32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool AllocConsole();
private void BtnSubmit_OnClick(object sender, RoutedEventArgs e)
{
var processInfo = new ProcessStartInfo("cmd.exe")
{
UseShellExecute = false,
RedirectStandardInput = true
};
var process = new Process()
{
StartInfo = processInfo,
};
AllocConsole();
process.Start(); // This close immediately and not work
process.StandardInput.WriteLine("someText");
process.StandardInput.WriteLine("moreText");
process.WaitForExit();
}
插入这行代码仍然无法使代码正常工作。应用程序是否仍然会立即关闭?是的,它会立即关闭。您能否发布一些代码,说明您正在尝试执行的操作。。理想情况下,此语句应该等待您的进程(此处为cmd)关闭后再退出。我使用了与OP POST相同的代码,并合并了您建议的更改,仅此而已。这在我的Windows 7笔记本电脑上运行得很好,但在Windows 10中它确实保持不动,但目录是空的,我写的任何内容都不会显示。顺便说一句,我不知道这是否明显,但我不知道。这只是在Visual Studio中调试时出现的问题。部署项目并在.exe文件上运行后,命令提示符窗口将保持不动,您可以对其进行写入,没有问题!