Хотите скрыть окно cmd и

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

System.Diagnostics.Process p;
string server_name = "";
string[] output;
p = new System.Diagnostics.Process();
p.StartInfo.FileName = "net";
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StandardOutput.ReadLine().ToString()

при выполнении этого кода. Cmd экраны приглашений идут. Я хочу скрыть это от пользователя. Что я могу для него сделать?

4 ответов


вы можете сказать процессу, чтобы не использовать окно или свести его к минимуму:

// don't execute on shell
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;

// don't show window
p.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;

С UseShellExecute = false вы можете перенаправить вывод:

// redirect standard output as well as errors
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardError = true;

при этом следует использовать асинхронное чтение выходных буферов, чтобы избежать взаимоблокировки из-за переполнения буферов:

StringBuilder outputString = new StringBuilder();
StringBuilder errorString = new StringBuilder();

p.OutputDataReceived += (sender, e) =>
            {
                if (e.Data != null)
                {
                    outputString.AppendLine("Info " + e.Data);
                }
            };

p.ErrorDataReceived += (sender, e) =>
            {
                if (e.Data != null)
                {
                    errorString.AppendLine("EEEE " + e.Data);
                }
            };

попробовать ProcessWindowStyle перечисление такой;

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;

стиль скрытого окна. Окно может быть видимым или скрытым. Этот система отображает скрытое окно, не рисуя его. Если окно скрытый, он эффективно отключен. Скрытое окно может обрабатывать сообщения из системы или из других окон, но он не может обрабатывать входной сигнал от потребителя или выхода дисплея. Часто, приложение может держите новое окно скрытым, пока оно настройка внешнего вида окна, а затем сделайте стиль окна нормальным. Использовать ProcessWindowStyle.Скрытый на ProcessStartInfo.Значение свойства useshellexecute собственность должна быть false.


попробуйте это как

p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

или проверить это

чтобы запустить дочерний процесс без какого-либо окна,

используйте свойство CreateNoWindow и задайте UseShellExecute.

ProcessStartInfo info = new ProcessStartInfo(fileName, arg); 
info.CreateNoWindow = true; 
info.UseShellExecute = false;
Process processChild = Process.Start(info); 

Я предлагаю вам пройти через этот пост MSDN:как запустить консольное приложение в новом окне, окно родителя, или без окна


добавить ссылку на систему.

using System.Diagnostics;

затем используйте этот код для запуска команды в окне hiden CMD.

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.Arguments = "Enter your command here";
cmd.Start();