1

目前,我正在使用 ProcessStartInfo 围绕 CMD 开发一个小型包装器,试图模拟命令窗口并添加一些我迫切需要的额外功能。

此 WINFORM 应用程序是一个多选项卡应用程序,因此您可以启动多个“会话”。此外,由于内容存储在富文本框中,我可以轻松复制它,更重要的是搜索控制台日志。

到目前为止,一切似乎都运行良好,但是当我询问当前目录时,我看到了这个应用程序的位置,这很好。但是当我向上一个目录时,它似乎不起作用。

我很确定我做错了什么。可以指出我是什么,我做错了什么吗?这是处理代码执行的代码摘录。

System.Diagnostics.ProcessStartInfo procStartInfo = new System.Diagnostics.ProcessStartInfo("cmd");
procStartInfo.RedirectStandardOutput = true;
procStartInfo.RedirectStandardError = true;
procStartInfo.RedirectStandardInput = true;
procStartInfo.UseShellExecute = false;
// Do not create window.
procStartInfo.CreateNoWindow = true;
// Now we create a process, assign its ProcessStartInfo and start it
proc = new System.Diagnostics.Process();
proc.StartInfo = procStartInfo;
proc.OutputDataReceived += new System.Diagnostics.DataReceivedEventHandler(onOutputDataReceived);
proc.ErrorDataReceived += new System.Diagnostics.DataReceivedEventHandler(onErrorDataReceived);
proc.Start();
proc.StandardInput.WriteLine("/c " + cmd);
proc.StandardInput.Close();
proc.BeginOutputReadLine();
proc.BeginErrorReadLine();
proc.WaitForExit();
4

1 回答 1

0

每次要执行命令时,您似乎都在启动一个新进程。如果您希望环境(如当前路径)在命令之间保持相同,则需要保存环境并将其加载到新进程中,或者保持单个进程打开。

于 2013-05-26T10:01:40.337 回答