Как скрыть пользовательский интерфейс консольного приложения при использовании Process.Start? - PullRequest
9 голосов
/ 12 января 2009

Я хочу запустить консольное приложение, которое выведет файл.

Я использую следующий код:

Process barProcess = Process.Start("bar.exe", @"C:\foo.txt");

При этом запускается окно консоли. Я хочу скрыть окно консоли, чтобы оно не было видно пользователю.

Возможно ли это? Является ли использование Process.Start лучшим способом запуска другого консольного приложения?

Ответы [ 4 ]

14 голосов
/ 12 января 2009
        Process p = new Process();
        StreamReader sr;
        StreamReader se;
        StreamWriter sw;

        ProcessStartInfo psi = new ProcessStartInfo(@"bar.exe");
        psi.UseShellExecute = false;
        psi.RedirectStandardOutput = true;
        psi.RedirectStandardError = true;
        psi.RedirectStandardInput = true;
        psi.CreateNoWindow = true;
        p.StartInfo = psi;
        p.Start();

Это запустит дочерний процесс без отображения окна консоли, и позволит захватывать StandardOutput и т. Д.

5 голосов
/ 12 января 2009

Проверьте в ProcessStartInfo и установите WindowStyle = ProcessWindowStyle.Hidden и CreateNoWindow = true.

1 голос
/ 10 марта 2010

Если вы хотите получить выходные данные процесса во время его выполнения, вы можете сделать следующее (в примере используется команда 'ping'):

var info = new ProcessStartInfo("ping", "stackoverflow.com") {
    UseShellExecute = false, 
    RedirectStandardOutput = true, 
    CreateNoWindow = true 
};
var cmd = new Process() { StartInfo = info };
cmd.Start();
var so = cmd.StandardOutput;
while(!so.EndOfStream) {
    var c = ((char)so.Read()); // or so.ReadLine(), etc
    Console.Write(c); // or whatever you want
}
...
cmd.Dispose(); // Don't forget, or else wrap in a using statement
0 голосов
/ 12 января 2009

Мы делали это в прошлом, выполняя наши процессы с использованием командной строки программно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...