Подтвердить что ты не робот

Разработать программу, которая работает в фоновом режиме в .NET?

Я сделал небольшую программу на С#, которую я хочу запустить в фоновом режиме, и она должна появляться только при нажатии определенной комбинации клавиш. Как я могу это сделать?

4b9b3361

Ответ 1

Существует как минимум три способа сделать это:

  • Классическое приложение Windows Service. " Создание базовой службы Windows в С#" статья CodeProject поможет вам. В этом случае вы используете пространство имен System.ServiceProcess. BTW, в этом случае вам следует прочитать "" пространство имен System.ServiceProcess" из MSDN. Вот короткая цитата из него:

    Пространство имен System.ServiceProcess предоставляет классы, позволяющие реализовать, установить и управлять приложениями Windows. Службы - это длинные исполняемые файлы, которые запускаются без пользовательского интерфейса.

  • Программа памяти-резидент. Но это почти невозможно сделать с С#. Используйте С++ или лучше C для этой цели, если хотите. Если вы хотите выполнить поиск самостоятельно, просто используйте ключевое слово TSR.

  • Последний - грязный. Просто создайте бесформенное приложение С# и попробуйте в hide из задачи менеджер.

Ответ 2

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

    trayIcon      = new NotifyIcon();
    trayIcon.Text = "My application";
    trayIcon.Icon = TheIcon

    // Add menu to tray icon and show it.
    trayIcon.ContextMenu = trayMenu;
    trayIcon.Visible     = true;

    Visible       = false; // Hide form window.
    ShowInTaskbar = false; // Remove from taskbar.

Чтобы контролировать клавиатуру, вы можете использовать крючок LowLevel Keyboard (см. пример) или присоединить hootkey (См. пример)

Ответ 3

Вы можете создать приложение для Windows. Он работает как фоновый процесс. Нет пользовательского интерфейса. Это также может запускаться автоматически при загрузке компьютера. Вы можете увидеть остальные фоновые процессы в диспетчере задач или ввести команду services.msc в командной строке.

Это может помочь. http://msdn.microsoft.com/en-us/library/9k985bc9%28v=vs.80%29.aspx

Ответ 4

Создайте приложение формы Windows и удалите Form1

Измените program.cs Application.Run(new Form1()); на Application.Run();

Ответ 5

Быстрое и грязное решение (я думаю, что шаблон приложения Window Service Application недоступен в Visual Studio Express и Standard):

Запустите новое приложение Windows Forms. Добавьте новый класс в решение и напишите код, который вы хотите внутри него.

Вернитесь к конструктору форм, установите для свойства WindowState значение Minimized и добавьте событие Load в форму. В случае, если обработчик скрывает форму и вызывает ваш класс:

private void Form1_Load(object sender, EventArgs e)
{
    this.Hide(); 
    MyNewClass mynewclass=new MyNewClass();
} 

Приложение не появляется на панели задач, и вы не видите его при нажатии Alt + Tab. Вы можете добавить значок systray к нему, если хотите, точно так же, как magol написал:

NotifyIcon trayIcon = new NotifyIcon();
trayIcon.Icon=new Icon(@"C:\iconfilename.ico");
trayIcon.Visible = true;

Ответ 6

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