Gibt es eine Möglichkeit, das Konsolenfenster beim Ausführen einer Konsolenanwendung auszublenden?
Ich verwende derzeit eine Windows Forms-Anwendung, um einen Konsolenprozess zu starten, möchte jedoch nicht, dass das Konsolenfenster angezeigt wird, während die Aufgabe ausgeführt wird.
c#
console-application
Aaron Thomas
quelle
quelle
Antworten:
Wenn Sie die
ProcessStartInfo
Klasse verwenden, können Sie den Fensterstil auf ausgeblendet setzen. Bei Konsolenanwendungen (nicht GUI-Anwendungen) müssen Sie CreateNoWindow auf Folgendes setzentrue
:quelle
Wenn Sie die Konsolenanwendung geschrieben haben, können Sie sie standardmäßig ausblenden.
Erstellen Sie eine neue Konsolen-App und ändern Sie den Typ "Ausgabetyp" in "Windows-Anwendung" (in den Projekteigenschaften ausgeführt).
quelle
Wenn Sie Process Class verwenden, können Sie schreiben
Vorher
yourprocess.start();
und Prozess wird ausgeblendetquelle
Die einfache Antwort lautet: Gehen Sie zu den Eigenschaften Ihrer Konsolenanwendung (Projekteigenschaften). Ändern Sie auf der Registerkarte "Anwendung" einfach den "Ausgabetyp" in "Windows-Anwendung". Das ist alles.
quelle
Du kannst den ... benutzen FreeConsole- API verwenden, um die Konsole vom Prozess zu trennen :
(Dies gilt natürlich nur, wenn Sie Zugriff auf den Quellcode der Konsolenanwendung haben.)
quelle
FreeConsole
tut, was sein Name sagt, hindert es Windows nicht daran, die Konsole anzuzeigen, bevor sie aufgerufen wird.[DllImport("kernel32.dll")] static extern bool AllocConsole();
können Sie problemlos mit einer Konsole aus einer Standard-Win32-AnwendungWenn Sie an der Ausgabe interessiert sind, können Sie diese Funktion verwenden:
Es führt das angegebene Befehlszeilenprogramm aus, wartet auf den Abschluss und gibt die Ausgabe als Zeichenfolge zurück.
quelle
Wenn Sie ein Programm erstellen, für das keine Benutzereingaben erforderlich sind, können Sie es jederzeit als Dienst erstellen. Ein Dienst zeigt keine Benutzeroberfläche an.
quelle
Fügen Sie dies Ihrer Klasse hinzu, um die DLL-Datei zu importieren:
Und wenn Sie es ausblenden möchten, verwenden Sie diesen Befehl:
Und wenn Sie die Konsole zeigen möchten:
quelle
Ich weiß, dass ich nicht genau beantworte, was Sie wollen, aber ich frage mich, ob Sie die richtige Frage stellen.
Warum benutzt du auch nicht:
Diese klingen nach besseren Optionen, wenn Sie nur einen Prozess ausführen möchten.
quelle
Obwohl andere Antworten hier besagten, dass Sie den "Ausgabetyp" in "Windows-Anwendung" ändern können, beachten Sie bitte, dass dies bedeutet, dass Sie ihn nicht verwenden können,
Console.In
da er zu einem NullStreamReader wird.Console.Out
undConsole.Error
scheinen aber immer noch gut zu funktionieren.quelle
Console.In
wenn es keine Konsole gibt, um etwas einzugeben? Woher soll etwas kommen, über das zugegriffen werden kannConsole.In
? Das macht überhaupt keinen Sinn. Mit anderen Worten: Es ist völlig klar und logisch , dassConsole.In
eine istNullStreamReader
in diesem Fall.Basierend auf der obigen Antwort von Adam Markowitz hat Folgendes für mich funktioniert:
quelle
Ich habe eine allgemeine Lösung zu teilen:
Nehmen Sie diese Klasse einfach in Ihr Projekt auf und rufen Sie an
Magician.DisappearConsole();
.Eine Konsole blinkt, wenn Sie das Programm durch Klicken starten. Bei der Ausführung an der Eingabeaufforderung verschwindet die Eingabeaufforderung sehr kurz nach der Ausführung.
Ich mache das für einen Discord Bot, der als unsichtbarer Prozess für immer im Hintergrund meines Computers läuft. Es war einfacher, als TopShelf dazu zu bringen, für mich zu arbeiten. Ein paar TopShelf-Tutorials sind fehlgeschlagen, bevor ich dies mit Hilfe von Code geschrieben habe, den ich an anderer Stelle gefunden habe. ; P.
Ich habe auch versucht, die Einstellungen in Visual Studio> Projekt> Eigenschaften> Anwendung einfach so zu ändern, dass sie als Windows-Anwendung anstelle einer Konsolenanwendung gestartet werden. Durch etwas an meinem Projekt konnte meine Konsole dadurch nicht ausgeblendet werden - möglicherweise, weil DSharpPlus beim Start eine Konsole starten muss . Ich weiß es nicht. Was auch immer der Grund sein mag, diese Klasse ermöglicht es mir, die Konsole einfach zu töten, nachdem sie aufgetaucht ist.
Hoffe, dieser Magier hilft jemandem. ;)
quelle
Einfach schreiben
quelle