По большей части см. ответ здесь . Однако я хотел бы отметить существование API-вызова FreeConsole()
, который позволяет вам изящно закрыть консоль.
[DllImport("kernel32.dll")]
static extern int FreeConsole()
Я хотел бы отметить одну вещь: вы можете увидеть некоторую странность командной строки, появляющейся перед выходом консоли, если вы запускаете ее с существующей консоли и подключаетесь к ней с помощью AttachConsole
(в отличие от AllocConsole
).
Это проблема времени, которую трудно обойти. Если это проблема, сделайте ваше приложение консольным, как предлагали другие. Это не приведет к тому, что командная строка не будет отображаться до тех пор, пока приложение не закроется, что может быть не так, как вы хотите, если вы открываете winform.
В ответ на ваш комментарий : это либо AttachConsole
, либо AllocConsole
. Приведенный мною пример сначала пытается присоединиться к существующей консоли. Если это не удается (скорее всего потому, что он не существует), вместо этого создается новое окно консоли.
Если вы найдете способ получить лучшее из обоих миров с точки зрения поведения командной строки и интерактивного режима графического интерфейса, пожалуйста, дайте мне знать. Я не занимался глубоким поиском решения, но у меня есть несколько небольших приложений, которые могут принести пользу.
Кстати: если вы планируете использовать pipe в командной строке (например, перенаправить вывод в файл), это, к сожалению, не будет работать.