2011-07-28 14 views
17

Uruchamiam aplikację konsoli za pomocą metody ProcessStartInfo i process.Start(). Chcę ukryć czarne okno. Oto mój kod:Jak rozpocząć proces ukryty?

string output = ""; 
//Setup the Process with the ProcessStartInfo class 
ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "C:\\WINNT\\system32\\cmd.exe"; 
startInfo.UseShellExecute = false; 
startInfo.RedirectStandardOutput = true; 

//Start the process 
Process proc = Process.Start(startInfo); 
+0

Jakieś końcowe rozwiązanie z pełnym kodem źródłowym próbującym pracować nad tym? CreateNoWindow = true? – Kiquenet

+0

możliwy duplikat [Ukryj okno konsoli od Process.Start C#] (http://stackoverflow.com/questions/5377423/hide-console-window-from-process-start-c-sharp) – sirdank

Odpowiedz

25

Spróbuj to:

startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
+4

To wystarczy. Dodaj tylko, że należy go ustawić przed wywołaniem 'Process.Start (startInfo)'. – Cipi

+1

ale to nie działa tutaj, niektóre inne sztuczki? –

+1

nie działa, ale ... pojawia się błąd po prostu pokazuje czarne okno? Potrzebuję więcej informacji. : D – Jonathan

5

Spróbuj

startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
+0

Już podane przez @jonathan –

25

Ostateczną odpowiedzią jest

ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = .... 
psi.RedirectStandardInput = true; 
psi.RedirectStandardOutput = false; 
psi.Arguments =... 
psi.UseShellExecute = false; 

psi.CreateNoWindow = true; // <- key line

+3

CreateNoWindow załatwiło sprawę dla mnie, gdy WindowStyle nie przyniosło efektu. W każdym razie przekierowuję standardowe wyjście i mogę teraz uniknąć pustego okna. – Timo

1
Process p = new Process(); 
.... 
p.StartInfo.CreateNoWindow = true; 
p.Start(); 
+0

Ta odpowiedź nie dodaje nowej wiedzy do istniejących odpowiedzi. – ShloEmi