2010-08-16 7 views
7

Ich muss eine Konsolenanwendung von meiner Windows-Anwendung ausführen. Die Konsolenanwendung ich ausführen will, ist eine Eingebettete Ressource in meiner Anwendung, und ich es so nenne:Das Konsolenfenster wird auch nach ProcessWindowStyle.Hidden noch angezeigt.

// Run the updater and grab its output 
Process Updater = new Process(); 
Updater.StartInfo.FileName = "C:\\tmp\\tmp.exe"; 
Updater.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; 
Updater.StartInfo.UseShellExecute = false; 
Updater.StartInfo.RedirectStandardOutput = true; 
Updater.Start(); 
string UpdaterOutput = Updater.StandardOutput.ReadToEnd(); 
Updater.WaitForExit(); 

Es extrahiert in Ordnung, und es läuft gut, und es greift auch sein Ausgang völlig in Ordnung ... aber ich kann immer noch sehen, wie das Konsolenfenster schnell geöffnet wird. Ich weiß, dass das Konsolen-Popup von dieser Anwendung stammt, da der Konsolentitel C:\tmp\tmp.exe lautet. Gibt es eine völlig ausfallsichere Möglichkeit, die Konsolenanwendung auszublenden? Ich dachte mit ProcessWindowStyle.Hidden würde es aber anscheinend nicht tun.

Danke.

+0

Diese Frage beantwortet wird, schließen Sie bitte Ihre Fäden. –

+0

@Hans Passant - Kann meine Antwort akzeptiert werden, wenn ich den Wiederholungszähler für den Tag getroffen habe? – fletcher

+1

@fletch: sicher, keine Kappe auf Antwortmarkierungspunkte. –

Antwort

16

Set der ProcessStartInfo.CreateNoWindow Eigenschaft true

+0

Ah, ich hatte das schon vorher benutzt, aber ich dachte nicht, dass es einen Unterschied machte, wenn ich 'ProcessWindowStyle.Hidden' benutzte. Und ich musste es auf wahr und nicht auf falsch setzen. Vielen Dank! :) – Kratz

+1

Ja, es ist spät hier. Ich vermasselt, doppelte Negative ... – fletcher

+0

ist das auch oder statt? – barlop