Скрыть окно консоли в консольном приложении C #


106

Дело в том, что я действительно не хочу, чтобы отображалось окно консоли ... но решение должно работать. Я хочу сказать, что я хочу, чтобы приложение работало в фоновом режиме, без появления каких-либо окон.


2
Не могли бы вы дать нам немного больше информации о том, что должно делать приложение? Похоже, это должна быть служба или приложение Windows? Обладая небольшими знаниями об этой цели, мы сможем помочь гораздо больше и предложить лучший способ решить эту проблему.
Дэйв,

Его приложение-кейлоггер. Я использовал службу Windows, но она не может получить ключевые состояния в службе Windows
Пользователь SOF,

Ответы:


188

Измените тип вывода с Консольного приложения на Приложение Windows . Это можно сделать в Visual Studio в Project -> Properties -> Application :

альтернативный текст


4
Окно консоли мигает и возвращается назад. Как сохранить работу приложения без окон?
Пользователь SOF,

Пользователь @SOF: Как запустить приложение? Двойным щелчком в проводнике или из меню «Пуск»?
Дирк Фоллмар,

я также поставил Console.ReadLine ();
Пользователь SOF,

16
Удалите Console.ReadLine. В этом нет никакого смысла, если у вас нет окна консоли.
Дирк Воллмар

1
@ KarolŻurowski: Идея заключается в том, что вы могли бы использовать это для приложений, которые либо поставляются с некоторой формой пользовательского интерфейса (например, значок на панели задач), либо для приложений, которые выполняют определенную задачу, а затем автоматически закрываются, когда это сделано. Если у вас нет ни того, ни другого, приложение будет работать в фоновом режиме до выхода / завершения работы или до тех пор, пока оно не будет явно убито, например, с помощью диспетчера задач.
Дирк Фоллмар

26

Измените тип вашего приложения на приложение Windows. Ваш код по-прежнему будет работать, но у него не будет окна консоли или стандартного окна Windows, если вы его не создадите.


2
Окно консоли мигает и возвращается назад. Как сохранить работу приложения без окон?
Пользователь SOF

Убедитесь, что это не прекратится. Без дополнительной информации действительно нечего сказать. Что делает программа? Он запускает что-то в цикле?
Лассе В. Карлсен

12

Вместо того, Console.Readline/keyчтобы использовать new ManualResetEvent(false).WaitOne()наконец. У меня это хорошо работает.


3

Может быть, вы хотите попробовать создать приложение службы Windows . Он будет работать в фоновом режиме без какого-либо пользовательского интерфейса.


3
Служба Windows не может получить события нажатия клавиш
пользователь SOF,

1
Службы сильно ограничены в зависимости от вашего приложения, поскольку в Windows Vista они принудительно используются в сеансе 0 и, таким образом, не могут выполнять какие-либо действия в других сеансах, например, показывать всплывающие сообщения.
Мэтт

1
@Matt "ничего не может выполнять в других сессиях" не совсем верно. Вот проект кода для службы, которая открывает командную строку администратора на рабочем столе вошедшего в систему пользователя. codeproject.com/Articles/35773/…
Qodex 09

1

Измените тип вывода с Консольного приложения на Приложение Windows ,

И вместо этого Console.Readline/keyвы можете использовать new ManualResetEvent(false).WaitOne()в конце, чтобы приложение работало.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.