Я сделал небольшую программу на С#, которую я хочу запустить в фоновом режиме, и она должна появляться только при нажатии определенной комбинации клавиш. Как я могу это сделать?
Разработать программу, которая работает в фоновом режиме в .NET?
Ответ 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. Его там, если при создании нового проекта