Сховати вікно консолі в додатку консолі C #


105

Річ у тому, що я дуже не хочу, щоб вікно консолі з'явилося ... але рішення повинно працювати. Моя суть у тому, що я хочу, щоб програма працювала у фоновому режимі, не відкриваючи жодного вікна.


2
Чи можете ви дати нам трохи більше інформації стосовно того, що має робити програма? Це здається, що це має бути послуга чи програма для Windows? Маючи трохи знань про свою мету, ми могли б допомогти набагато більше та запропонувати найкращий спосіб вирішити це.
Дейв

Її додаток кейлоггера. Я використовував сервіс Windows, але він не може отримати ключові стани у службі Windows
користувач SOF

Відповіді:


188

Змініть тип виводу з програми Console Application на програму Windows . Це можна зробити в рамках Проекту -> Властивості -> Застосування в Visual Studio:

alt текст


4
Вікно консолі блимає і повертається назад. Як я можу підтримувати роботу програми без вікна взагалі?
Користувач SOF

Користувач @SOF: Як запустити програму? Двічі клацнувши в Провіднику чи в меню "Пуск"?
Дірк Волмар

я також поставив Console.ReadLine ();
Користувач SOF

16
Видаліть Console.ReadLine. Це не має сенсу, якщо у вас немає вікна консолі.
Дірк Волмар

1
@ KarolŻurowski: Ідея тут полягає в тому, щоб ви використовували це для додатків, які також постачаються з певною формою інтерфейсу (наприклад, піктограмою в системному лотку) або додатків, які виконують певну задачу, а потім автоматично завершуються. Якщо у вас немає жодного, додаток буде працювати у фоновому режимі до відходу / відключення або поки явно не буде вбито, наприклад, за допомогою диспетчера завдань.
Дірк Волмар

26

Змініть тип своєї програми на програму Windows. Ваш код все ще буде працювати, але він не матиме вікна консолі, ані стандартного вікна, якщо ви не створите його.


2
Вікно консолі блимає і повертається назад. Як я можу підтримувати роботу програми без вікна взагалі?
Користувач SOF

Ви переконайтеся, що воно не припиняється. Справді, не можна сказати багато іншого без додаткової інформації. Що робить програма? Чи працює щось у циклі?
Лассе В. Карлсен

1
Зміна програми "Тип виходу" на "Додаток Windows" працювала для мене.
hellowahab

12

Замість Console.Readline/keyвас можна використовувати new ManualResetEvent(false).WaitOne()нарешті. Це добре працює для мене.


3

Можливо, ви хочете спробувати створити додаток для служби Windows . Він буде працювати у фоновому режимі, без жодного інтерфейсу користувача.


3
Служба Windows не може отримати ключові події, натиснуті на клавіші
користувач SOF

1
Послуги сильно обмежені залежно від вашої програми, оскільки у Windows Vista вони примушені до сесії 0, і тому не можуть виконувати нічого в інших сесіях, таких як показ спливаючих повідомлень.
Метт

1
@Matt "не може нічого виконати на інших сесіях" - це не зовсім так. Ось проект коду для Сервісу, який відкриває командний рядок адміністратора на робочому столі користувача, який увійшов. codeproject.com/Articles/35773/…
Qodex

0

Змініть тип виводу з програми Console Application на програму Windows ,

І замість цього Console.Readline/keyви можете використовувати new ManualResetEvent(false).WaitOne()в кінці, щоб тримати додаток.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.