Я вызываю Defrag.exe из моего приложения С#. Я хочу получить результат процесса дефрагментации, когда он будет обновлен.
Я хочу, чтобы этот вывод (в красном прямоугольнике) был напечатан в моем приложении. (Когда обновлен процент обновления 11%, он также должен быть напечатан.):
Я использую этот код:
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. Даже после завершения процесса дефрагментации. В чем проблема?
Возможно, вам понадобится какой-то 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