C # Как получить вывод из CMD (Command = «Defrag c: / U») до завершения процесса.

1

Я вызываю Defrag.exe из моего приложения С#. Я хочу получить результат процесса дефрагментации, когда он будет обновлен.

Я хочу, чтобы этот вывод (в красном прямоугольнике) был напечатан в моем приложении. (Когда обновлен процент обновления 11%, он также должен быть напечатан.):

Изображение 174551

Я использую этот код:

Process selectedProc = new Process();
selectedProc.StartInfo.UseShellExecute = false;
selectedProc.StartInfo.RedirectStandardOutput = true;
selectedProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
selectedProc.StartInfo.CreateNoWindow = true;

selectedProc.OutputDataReceived += (sender, e) => 
{                
       Debug.WriteLine(e.Data); 
};

selectedProc.StartInfo.WorkingDirectory = System.IO.Path.GetPathRoot(Environment.SystemDirectory);
selectedProc.StartInfo.FileName = System.IO.Path.Combine(Environment.SystemDirectory, "defrag.exe");
selectedProc.StartInfo.Arguments = "C: /U";
selectedProc.Start();
selectedProc.BeginOutputReadLine();

После некоторого времени я закрываю процесс с помощью этого кода:

selectedProc.Kill();

Между process.Start() и process.Kill() я не вижу ни одного вывода, напечатанного в разделе отладки в Visual Studio. Даже после завершения процесса дефрагментации. В чем проблема?

  • 0
    Это может быть в потоке ошибок ...
  • 0
    Нет, он также ничего не выводит в поток ошибок.
Показать ещё 9 комментариев
Теги:
cmd
output

1 ответ

0

Возможно, вам понадобится какой-то api для этого процесса, посмотрите http://blogs.msdn.com/b/jeffrey_wall/archive/2004/09/13/229137.aspx

и там http://msdn.microsoft.com/en-us/library/windows/desktop/aa363911%28v=vs.85%29.aspx

Ещё вопросы

Сообщество Overcoder
Наверх
Меню