Как скрыть окно cmd во время запуска пакетного файла?
Я использую следующий код для запуска командного файла
process = new Process();
process.StartInfo.FileName = batchFilePath;
process.Start();
Как скрыть окно cmd во время запуска пакетного файла?
Я использую следующий код для запуска командного файла
process = new Process();
process.StartInfo.FileName = batchFilePath;
process.Start();
Если proc.StartInfo.UseShellExecute false, то вы запускаете этот процесс и можете использовать:
proc.StartInfo.CreateNoWindow = true;
Если proc.StartInfo.UseShellExecute является истиной, тогда ОС запускает процесс, и вы должны предоставить "подсказку" для процесса через:
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Однако вызываемое приложение может игнорировать этот последний запрос.
Если вы используете UseShellExecute = false, вам может потребоваться перенаправить стандартный вывод/ошибку, чтобы зафиксировать произведенные записи:
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.OutputDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
proc.StartInfo.RedirectStandardError = true;
proc.ErrorDataReceived += new DataReceivedEventHandler(ProcessOutputHandler);
И получим такую функцию, как
private void ProcessOutputHandler(object sendingProcess, DataReceivedEventArgs outLine)
{
if (!String.IsNullOrEmpty(outLine.Data)) // use the output outLine.Data somehow;
}
Там хорошая страница, охватывающая CreateNoWindow
this на блоге MSDN.
В Windows есть ошибка, которая может вызвать диалог и поразить CreateNoWindow
, если вы передаете имя пользователя/пароль. Для деталей
http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=98476 http://support.microsoft.com/?kbid=818858
В соответствии с Свойства процесса у вас есть:
Свойство:
CreateNoWindow
Примечания. Позволяет запускать программу командной строки молча. Он не мигает консольным окном.
и
Свойство:
WindowStyle
Примечания. Используйте это, чтобы установить окна как скрытые. Автор часто использовалProcessWindowStyle.Hidden
.
В качестве примера!
static void LaunchCommandLineApp()
{
// For the example
const string ex1 = "C:\\";
const string ex2 = "C:\\Dir";
// Use ProcessStartInfo class
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = false;
startInfo.UseShellExecute = false;
startInfo.FileName = "dcm2jpg.exe";
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = "-f j -o \"" + ex1 + "\" -z 1.0 -s y " + ex2;
try
{
// Start the process with the info we specified.
// Call WaitForExit and then the using statement will close.
using (Process exeProcess = Process.Start(startInfo))
{
exeProcess.WaitForExit();
}
}
catch
{
// Log error.
}
}
Использование: process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
Это то, что сработало для меня, Когда вы перенаправляете все входные и выходные данные и устанавливаете скрытое окно, он должен работать
Process p = new Process();
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardInput = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;