Ich habeC# kann ich nicht CreateNoWindow zu arbeiten - nicht einmal das msdn.com Beispiel
hier sah Und ich verstehe, dass
A) Nicht jedes Programm respektiert CreateNoWindow Anfrage und
B) Es erfordert UseShellExecute = False (Standard ist wahr).
C) Es soll angeben, ob ein Fenster erstellt wird. (Es wird das Elternfenster niemals verstecken). Es wird davon gesprochen, ob ein Fenster für den Kindprozess erstellt wird. (msdn sagt 'neues Fenster')
D) CreateNoWindow ist standardmäßig auf false gesetzt.
Ich bin dies von cmd ausgeführt, obwohl das Klicken im dreidimensionalen Studio das gleiche Verhalten zeigt.
Ich setze CreateNoWindow auf false, also hätte ich gedacht, dass es ein neues Fenster für den Kindprozess erstellen würde.
Aber es tut es nicht.
Task-Manager zeigt die zweite Instanz von cmd.exe, aber es gibt immer noch das eine Fenster, wie Sie sehen können. Unten ist die Paste aus einem Fenster. Es hat die untergeordnete cmd.exe in das übergeordnete Fenster geladen (das Ein-cmd-Fenster)
Wenn ich CreateNoWindow auf True oder False festlegen, dann scheint es keinen Unterschied zu machen.
So bekomme ich eindeutig nicht das Beispiel an diesem msdn Link zu arbeiten.
C:\crp>type aaa.csc
using System.Diagnostics;
class blah{
public static void Main(string[] args) {
Process p = new Process();
ProcessStartInfo psi = new ProcessStartInfo();
psi.UseShellExecute=false;
psi.FileName="cmd.exe";
psi.CreateNoWindow=false;
p.StartInfo=psi;
p.Start();
}
}
C:\crp>csc aaa.csc
Microsoft (R) Visual C# Compiler version 4.0.30319.34209
for Microsoft (R) .NET Framework 4.5
Copyright (C) Microsoft Corporation. All rights reserved.
C:\crp>aaa.exe
C:\crp>Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:\crp>
UPDATE
Es scheint, es funktioniert. Wenn Sie eine Eingabeaufforderung von cmd öffnen und die EXE ausführen, wird in einem Fall cmd.exe innerhalb des übergeordneten Elements gestartet. Im anderen Fall startet es eine cmd.exe ohne Fenster. Das Verhalten im Visual Studio scheint jedoch merkwürdig, siehe meinen Kommentar zu Ephraims Antwort. In dieser Frage habe ich es zwar nur in Visual Studio versucht, aber ich habe es nur mit dem Projekt versucht, das als Konsolenanwendung dient, und dort wird immer ein Cmd-Eingabeaufforderungsfenster erscheinen. Das Verhalten ist für eine Nicht-Konsolenanwendung, z.B. eine Winforms-Anwendung.
dies scheint zu machen ein unterschied wenn man es aus visual studio macht, aber nicht von cmd .. was seltsam erscheint/In visual studio in einem settof von CreateNoWindow hält es das cmd Fenster geöffnet während es den Child Prozess ausführt. Im anderen Fall schließt es es.Ich sehe immer noch nicht, wie das mit der Bedeutung von CreateNoWindow zusammenhängt. – barlop
Haben Sie das als Referenz gelesen? http://StackOverflow.com/a/5094208/6138713 –
ja ich habe gelesen, dass – barlop