cmd.exe运行时正在加载栏

本文关键字:加载 exe 运行时 cmd | 更新日期: 2023-09-27 18:13:10

我要做的事情:

将命令传递给.cmd,在命令执行时显示加载栏,在进度栏满后退出cmd并显示消息框

发生了什么:

当我点击发送命令的按钮时,应用程序挂起,命令被执行,但CMD在完成后永远不会退出,所以应用程序保持冻结状态(直到我手动关闭CMD.exe(。我也不知道如何在命令执行时显示加载栏。当加载栏已满时,我将显示消息框。

我的代码:

Process p = new Process();
p.StartInfo.FileName = "cmd.exe";
p.StartInfo.WorkingDirectory = @"C:'"
p.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
p.StandardInput.WriteLine(Command_That's_Called);

^在button_Click事件中执行。

我尝试过的东西:

p.WaitForExit(); // still hangs

还有线程,但我收到了一个错误,比如"从创建线程以外的线程访问"。

关于CMD不关闭,我只会在一定时间后杀死它,但命令完成的时间长短取决于各种因素。

cmd.exe运行时正在加载栏

要在CMD进程执行完命令后退出,请尝试在进程参数的开头添加"/C":

p.StartInfo.Arguments = "/C (your arguments)";

如果在命令提示符中键入"cmd/?",您会发现"/C:执行字符串指定的命令,然后终止"。

关于添加LoadingBar,您需要了解BackgroundWorker类