Скрыть консоль (полностью) для консольного приложения, но только иногда - PullRequest
2 голосов
/ 11 августа 2011

У меня есть консольное приложение C #, которое запускает этап предварительной сборки (чтобы получить пакеты NuGet).

Когда я отлаживаю это, я хочу передать параметр и показать консоль. Когда я не отлаживаю это, я не хочу видеть это. Я даже не хочу, чтобы он вспыхнул там на секунду.

Я нашел способы скрыть это после того, как оно показало. Но я не могу найти способ, чтобы он никогда не показывался, если я не хочу изменить его с консольного приложения на приложение Windows. (Что бы я сделал, если бы мог найти способ показать Консоль при необходимости.)

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Создайте приложение для Windows и покажите консоль, когда вам это нужно. Чтобы показать консоль при необходимости, используйте P / Invoke для вызова AllocConsole ( pinvoke.net имеет требуемое объявление).

(Процессы подсистемы консоли всегда получают консоль, родительский процесс, если таковой был, в противном случае - новый. Так Windows работает на глубоком уровне.)

0 голосов
/ 11 августа 2011

Использование FreeConsole Функция WINAPI:

http://pinvoke.net/default.aspx/kernel32/FreeConsole.html

Другое решение - просто переключиться на приложение WinForms в качестве типа проекта.Тогда консоль не будет выделена (и вам не нужно показывать форму).

...