Ich bin etwas verwirrt darüber, wie dieses Programm sowohl Konsole als auch GUI unterstützt, da Microsoft beide Modi so konzipiert hat, dass sie sich gegenseitig ausschließen.
Der Microsoft-Artikel Wie wird eine Anwendung als GUI- und Konsolenanwendung erstellt? sagt das:
In Windows sind GUI-Anwendungen und Konsolenanwendungen sehr unterschiedlich. GUI-Anwendungen haben mindestens ein Fenster und eine Meldungsschleife, jedoch keinen Standardein- / ausgang / -fehler. Konsolenanwendungen haben standardmäßige In / Out / Fehler, aber kein Fenster, keine Nachrichtenschleife. Eine Anwendung ist entweder eine GUI-Anwendung oder eine Konsolenanwendung, jedoch nicht beides.
Einige Leute möchten, dass sich ihre Anwendung je nach Eingabe unterschiedlich verhält. Bei Eingaben verhält sich die Anwendung wie eine Konsolenanwendung. Wenn keine Eingabe erfolgt, verhält es sich wie GUI-Anwendungen.
Anschließend werden zwei mögliche Lösungen aufgelistet.
- Der
.com
versus.exe
Trick (.com
immer schon früher gefunden.exe
)
In VisualStudio gibt es tatsächlich zwei Binärdateien: devenv.com und devenv.exe. Devenv.com ist eine Konsolen-App. Devenv.exe ist eine GUI-App. Wenn Sie devenv eingeben, wird devenv.com aufgrund der Win32-Prüfregel ausgeführt. Wenn keine Eingabe erfolgt, startet devenv.com devenv.exe und beendet sich selbst. Wenn es Eingaben gibt, behandelt devenv.com sie als normale Konsolen-App.
- Die Respawn-Methode
Im Fall von Iildasm gibt es nur eine Binärdatei: ildasm.exe. Es wird zuerst als GUI-Anwendung kompiliert. Später wird es mit editbin.exe als Konsolenteilsystem markiert. In seiner Hauptmethode wird festgelegt, ob es als Konsolenmodus oder GUI-Modus ausgeführt werden muss. Wenn es als GUI-Modus ausgeführt werden muss, stellt es sich als GUI-App um.
Ich weiß nicht, welche Methode von Ihrem Programm verwendet wird, und es wäre interessant, das herauszufinden. Mit dem kostenlosen Prozessmonitor können Sie nachverfolgen, was der Fall ist.
Wenn das Problem beim Starten des Programms über eine Konsole das schwarze Fenster der Konsole ist, das hinter dem Programm angezeigt wird, gibt es in jedem Fall eine Lösung. Wenn Sie die Konsole als ausgeblendet starten, wirkt sich dies nicht auf die Anzeige der GUI aus, die weiterhin sichtbar ist.
Siehe meine Antwort im Beitrag Eine Batchdatei vollständig versteckt ausführen . Jede der beschriebenen Lösungen sollte funktionieren, es sei denn, die von Ihrem Programm für die Unterstützung von Konsole und GUI gewählte Methode kann es sabotieren.