wake-up-neo.com

Konsolenfenster in Process.Start C # ausblenden

Ich versuche, einen Prozess auf einem Remotecomputer mithilfe der System.Diagnostics.Process-Klasse zu erstellen. Ich kann einen Prozess erstellen. Das Problem ist jedoch, dass das Erstellen eines Dienstes viel Zeit in Anspruch nimmt und das Konsolenfenster angezeigt wird. Eine weitere ärgerliche Sache ist, dass das Konsolenfenster über meinem Windows-Formular angezeigt wird und ich keine anderen Vorgänge in diesem Formular ausführen kann. Ich habe alle Eigenschaften wie CreateNoWindow = true,

proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden

aber es zeigt immer noch das Konsolenfenster. Ich habe sogar die Ausgabe und die Fehler umgeleitet, um den Stream zu trennen, aber kein Glück.

Gibt es eine andere Möglichkeit, das Konsolenfenster auszublenden? Bitte hilf mir .

Hier ist der Teil meines Codes, mit dem ich den Befehl sc ausgeführt habe.

Process proc = new Process();
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo.FileName = "sc";
proc.StartInfo.Arguments = string.Format(@"\\SYS25 create MySvc binPath= C:\mysvc.exe");
proc.StartInfo.RedirectStandardError = false;
proc.StartInfo.RedirectStandardOutput = false;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.CreateNoWindow = true;
proc.Start();
proc.WaitForExit();
89
Prasad

Ich hatte ein ähnliches Problem, als ich versuchte, einen Prozess zu starten, ohne das Konsolenfenster anzuzeigen. Ich habe mit verschiedenen Kombinationen von Eigenschaftswerten getestet, bis ich eine gefunden habe, die das gewünschte Verhalten aufweist.

Hier ist eine Seite, die ausführlich erläutert, warum die Eigenschaft UseShellExecute auf false gesetzt werden muss.
http://msdn.Microsoft.com/en-us/library/system.diagnostics.processstartinfo.createnowindow.aspx

Im Abschnitt "Bemerkungen" auf Seite:

Wenn die UseShellExecute-Eigenschaft true ist oder die Eigenschaften UserName und Password nicht null sind, wird der CreateNoWindow-Eigenschaftswert ignoriert und ein neues Fenster erstellt.

ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.FileName = fullPath;
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;
startInfo.RedirectStandardError = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;

Process processTemp = new Process();
processTemp.StartInfo = startInfo;
processTemp.EnableRaisingEvents = true;
try
{
    processTemp.Start();
}
catch (Exception e)
{
    throw;
}
110
John Bartels

Ich hatte Pech mit dieser Antwort, da der Prozess (Wix light.exe) im Wesentlichen zum Mittagessen ausgeht und nicht rechtzeitig zum Abendessen nach Hause kommt. Für mich hat jedoch Folgendes gut funktioniert:

Process p = new Process();
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
// etc, then start process
49
John Lockwood

Dies sollte funktionieren, versuchen Sie es;


Fügen Sie eine Systemreferenz hinzu.

using System.Diagnostics;

Verwenden Sie dann diesen Code, um Ihren Befehl in einem erweiterten CMD-Fenster auszuführen.

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

Das Fenster wird nicht angezeigt:

Process cmd = new Process();
cmd.StartInfo.FileName = "cmd.exe";
cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmd.StartInfo.CreateNoWindow = true;

...
cmd.Start();
3