关于Process的使用

控制台启动应用,并且执行完不关闭控制台

通过Process.Start启动的外部应用,一般执行完成后,都会自动关闭控制台窗口。
一些应用,执行完了以后,希望不要把窗口关闭,以便了解执行的情况,可以在通过"cmd /k 命令路径 命令参数"的方式启动。
示例代码如下:

var startInfo = new ProcessStartInfo
{
    FileName = "cmd",
    Arguments = $"/k python \"{tempFilePath}\"",
    UseShellExecute = true,
    CreateNoWindow = false
};
using var process = new Process { StartInfo = startInfo };
process.Start();
await process.WaitForExitAsync();

启动应用并获取应用的输出信息

var startInfo = new ProcessStartInfo
{
	FileName = "python",
	Arguments = $"\"{tempFilePath}\"",
	RedirectStandardOutput = true,
	RedirectStandardError = true,
	UseShellExecute = false,
	CreateNoWindow = true,
	StandardOutputEncoding = Encoding.UTF8,
	StandardErrorEncoding = Encoding.UTF8
};
startInfo.Environment["PYTHONIOENCODING"] = "utf-8";

using var process = new Process { StartInfo = startInfo };

process.OutputDataReceived += (sender, args) =>
{
	if (args.Data != null)
	{
		Application.Current.Dispatcher.Invoke(() => Items.Add(args.Data));
	}
};

process.ErrorDataReceived += (sender, args) =>
{
	if (args.Data != null)
	{
		Application.Current.Dispatcher.Invoke(() => Items.Add($"Error: {args.Data}"));
	}
};

process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();

await process.WaitForExitAsync();
posted @ 2025-12-18 10:53  wzwyc  阅读(3)  评论(0)    收藏  举报