Как запустить консольное приложение .NET в фоновом режиме
У меня есть консольное приложение, написанное на С#, которое планируется запустить каждые 15 минут или около того с помощью встроенного планировщика задач Windows.
Каждый раз, когда он запускается, черная консольная панель появляется на время ее выполнения, а затем закрывается. Я ничего не пишу на консоль. Есть ли способ сделать этот запуск в фоновом режиме?
Ответы
Ответ 1
Легко!
Кажется, трудно поверить, но это работает как прелесть. Я использовал это для некоторых проектов установки, когда вы хотите выполнять пользовательские задачи без каких-либо признаков.
- Создайте проект как проект приложения Windows (это сложная часть).
-
Никогда не звоните в какую-либо форму. Просто продолжайте точно так же, как в консольном приложении
class Program
{
static void Main(string[] args)
{
// Just don't call Application.Run(new frmMain(args));
// ... your code
}
}
Это связано с тем, что проекты приложений Windows не отличаются от консоли, за исключением первой формы и ссылок.
Это полностью скрытое исполнение. Попробуйте!
Ответ 2
Проект > Свойствa > вкладка "Приложение" > измените тип вывода на "приложение Windows".
Больше нет окна консоли.
Ответ 3
Как реализовать приложение в службе Windows? Вы можете установить интервал до 15 минут и запустить операцию в timer_tick.
Ответ 4
Вы можете использовать Windows API для минимизации поля консоли. В противном случае вы можете сделать его файлом Windows EXE, который фактически не загружает форму и вызывает System.Windows.Forms.Application.Run()
.
Код для минимизации консоли:
[DllImport( "user32.dll" )]
public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
public const int SW_SHOWMINIMIZED = 2;
IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;
ShowWindow(winHandle, SW_SHOWMINIMIZED);
Ответ 5
Если у вас уже создано приложение Windows Console, вы можете просто изменить тип вывода вашего приложения на приложение Windows.
В рамках вашего проекта:
Перейдите в меню Свойствa > Приложение
Выберите "Приложение Windows" в качестве типа вывода.
Это будет наименьшее влияние, и вы можете сохранить планировщик задач Windows с той же задачей.
Ответ 6
Если он ничего не пишет на консоль, вы можете сделать его услугой.
http://msdn.microsoft.com/en-us/library/9k985bc9%28VS.80%29.aspx
Ответ 7
Он будет отображаться только в том случае, если он будет запущен в качестве того же пользователя, который в настоящий момент вошел в систему. Создайте еще одного пользователя на машине со смешным длинным паролем, установите его как администратор (только при необходимости) и запланируйте задачу запускается как этот пользователь.
Ответ 8
Грязный как-то там, но (отсюда):
Процесс занимает 3 файла. launch.bat
, invis.vbs
и (ваш программа). В файле launch.bat(этот файл запускается ваша программа тихо), введите wscript.exe "C:\yourpath\invis.vbs" "your file.bat"
. В invis.vbs
, положить в
CreateObject("Wscript.Shell").Run """"
& WScript.Arguments(0) & """", 0,
False
И, наконец, в вашем файле launch.bat
поставьте все, что угодно хотите...
echo off erase c:\junk.txt
. Ну, ты сделанный. Просто откройте launch.bat
.
Он работает как шарм. Он запускает первую летучую мышь (launch.bat), которая, в свою очередь, запускает ваш сервис/исполняемый файл скрытно. Таким образом, это быстрый снимок для первоначального запуска, а затем ушел.
Ответ 9
Это легко. Задайте задачу для запуска под учетной записью, которая не является вашей учетной записью.