Srikanth59 Ответов: 8

как запустить приложение windows, когда пользователь запускает систему, которая должна работать в фоновом режиме


Я создал одно приложение windows на c#, теперь я хотел бы запустить это приложение, когда пользователь запускает систему, но у приложения есть несколько настроек для запуска этого приложения, например, нажмите кнопку, чтобы начать когда-нибудь.Итак, как я могу запустить это приложение в фоновом режиме

[no name]

Пожалуйста, уточните: что вы подразумеваете под "запуском его в фоновом режиме"?

Srikanth59

мне нужно запустить приложение в фоновом режиме в windows,оно выполняет свою работу, не мешая пользователю

[no name]

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

Kornfeld Eliyahu Peter

Возможно, превратить приложение в сервис...

Praveen Kumar Upadhyay

Создайте консольное приложение и добавьте в Task schedular, которое будет более гибким, и у него есть все эти опции для автоматического запуска приложения после входа пользователя в систему.

Wastedtalent

Как и выше, преобразуйте его в сервис.

Ganesh KP

Есть служба windows или это может быть расписание задач, запущенных при нажатии кнопки приложения WPF и как при автоматическом входе в систему windows. Таким образом, в любом случае вы можете контролировать запуск и остановку службы.

Ищите решение, например, как создать фоновую службу или сделать запланированные задачи в dotNet.

[no name]

планировщик задач windows может это сделать. просто напишите команду для запуска в файле. bat. затем запустите файл. bat.

8 Ответов

Рейтинг:
66

Frank Kerrigan

Создайте службу Windows, а не приложение, они работают в фоновом режиме и могут запускаться автоматически

Также обратите внимание: службы windows имеют приоритетное время запуска над всеми другими стандартными приложениями на основе форм, и они также могут быть запущены до того, как пользователь войдет в саму windows.

Вы можете начать работу, следуя документам MSDN, перечисленным здесь
Как писать службы программно


[no name]

Оценка 5, так как это более практичный и профессиональный подход к другим решениям. Также улучшен ваш ответ, чтобы добавить больше ясности.

kbhtech

Я полностью согласен с этой концепцией: создание служб windows обеспечивает лучшее средство управления фоновыми процессами, в то время как служба также может использовать объект forms (или пользовательский класс, если на то пошло) в трее уведомлений.

Следовательно, мы рассматриваем сервис с событиями onStart, onStop, onPause, onResume и onRestart, которые позволяют легко манипулировать программой в зависимости от состояния системы.

Затем, включив приложение forms в службу, которое спрятано в системном трее: мы включили еще больше управления, настройки и манипуляций во время выполнения без необходимости написания клиента. При этом значок в трее уведомлений даже не должен отображаться, если только не произошел какой-то процесс.

Искренне говоря, не зацикливайтесь на манипуляциях с сервисом во время работы. Однако всякий раз, когда вы возвращаетесь домой, исследуйте его и создайте сервис, в который встроен значок в системном трее, когда он инициируется невидимо.

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

Рейтинг:
2

kbhtech

Я видел сильное провозглашение услуг, поэтому я собираюсь предложить другое решение.

Консольное приложение, которое требует аргументов и выполняет различные задачи на основе аргументов. Заставь его спрятаться. Затем перейдите в Панель управления "Администрирование" и "планировщик задач".

Нет, пусть консоль ждет выхода ввода. Он должен просто выполнить args и закрыть. Это еще один метод, который является чистым.


Рейтинг:
1

thereyno

Я думаю, вы хотите скрыть приложение, которое хотите запустить, верно?
Ну вот мое решение:
1-й. Вы должны запустить его сразу после запуска windows.
Это код при добавлении вашего программного обеспечения / программы, запущенной сразу после запуска windows:

//adding to microsoft startup program
//using Microsoft.Win32;
using (RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
    reg.SetValue(ProjectTitle, Defaultpath + ProjectName);
}

//removing to startup program
/*using (RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
{
    reg.DeleteValue(ProjectTitle,false);
}*/


2-й. И вам нужно скрыть формы в коде, и ваша программа уже работает в фоновом режиме, и это зависит от вас, что вы хотите сделать, просто так получилось, что вы хотите запустить свою программу в фоновом режиме.

а вот код для скрытия вашей формы:
этот.Скрыть();


надеюсь, это поможет вам, сэр.


Рейтинг:
1

koolprasadd

Есть купе способы существуют для того, чтобы выполнить вашу задачу
1. Создайте службу windows и разверните ее для автоматического запуска, обычно она работает в фоновом режиме
2. Создайте приложение windows/console с фоновым рабочим классом и сохраните этот exe-файл в папке users\startup, чтобы при входе пользователя в систему он вызывал этот exe-файл при запуске каждого пользователя


Рейтинг:
1

sopy7

Недавно я работал над подобным требованием, и ниже приведено то, что я сделал.

1. Сначала добавьте свое приложение для запуска с помощью приведенного ниже кода

<pre lang="c#">
private void AddApplicationToStartUp()
        {
            RegistryKey reg = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
            reg.SetValue("Your App Name", Application.ExecutablePath.ToString());
        }


2. при запуске запустите приложение в фоновом режиме, как показано ниже

    public void RunFormInBackGround()
{
    this.WindowState = FormWindowState.Minimized;
    ShowInTaskbar = false;
    this.Visible = false;
}


3. я выполняю методы, упомянутые в пунктах № 1 и 2 в событии загрузки формы, как показано ниже

private void frmBackground_Load(object sender, EventArgs e)
        {
            RunFormInBackGround(); 
            AddApplicationToStartUp();

        }


Я надеюсь, что вышеизложенное поможет, для дальнейших запросов / вопросов, действительно ответьте.


Рейтинг:
0

ChrisCreateBoss

Что я понимаю: вы хотите запустить свое приложение при запуске windows.

Что вы можете сделать:

1) Нажмите на меню Пуск, выберите Все программы, найдите папку запуска, щелкните правой кнопкой мыши и нажмите кнопку Открыть.

2) Сделайте ярлык, связанный с вашей программой, и переместите его в папку запуска.

3) Если вы не хотите показывать свое приложение, откройте свое решение, перейдите в свой конструктор, выберите форму 1 или как она там называется, и перейдите на панель свойств, измените опцию "Показать значок" на "False", наконец, установите WindowState на "Minimized".

Вот и все. При повторном запуске Windows ваше приложение должно автоматически запускаться после регистрации пользователя.

Надеюсь, это поможет! Ура! - ЦКБ


[no name]

Это очень небрежный способ создания параметров запуска приложения при загрузке windows. Если OP использует install-shield, они могут получить эту функциональность непосредственно из install-shield. Дальнейшие и более практичные решения могут быть поданы с помощью простого сервисного / сервисного контроллера, который, на мой взгляд, был бы более выгодным.

kbhtech

Небрежное, заслуженное мнение:

При использовании такой процедуры фоновый процесс не может изменяться в зависимости от состояния операционной системы, которое может привести к тому, что программа будет прослушиваться. Это не было бы ужасным решением, если бы за несколько меньшие усилия не был создан полностью функциональный и защищенный от ошибок процесс.

Таким образом, не только неэффективна производительность, но и неэффективна со временем. Следовательно, этот метод является неэффективным периодом.

Однако: если процесс должен завершиться после того, как процедура состоялась... но даже в этом случае это было бы неэффективно, поскольку сервисы действительно позволяют манипулировать с помощью планирования задач.

Итак, это "небрежно", если этого недостаточно, вот почему.

Рейтинг:
0

Vipin @ IT SOLUTIONS24x7

добавьте компонент systrayNotifyIcon в свою форму
добавьте компонент contextMenuStrip в свою форму
в свойствах systrayNotifyIcon установите ContextMenuStrip на компонент contextMenuStrip, который вы только что добавили в форму.
Выберите компонент ContextMenuStrip, и вы увидите систему меню в верхней части вашей формы, эта система меню будет отображаться, когда пользователь щелкнет правой кнопкой мыши на значке в своем системном трее.
Создавайте меню, как вы обычно это делаете, и создавайте методы для них, чтобы делать что-то, что бы это ни было.

Затем при загрузке формы вам нужно создать и инициализировать событие doubleclick для systrayNotifyIcon, а также добавить значок (обязательно добавьте значок приложения для вашего приложения) и сделать что-то вроде этого




this.theSystrayNotifyIcon = new NotifyIcon(this.components);
this.theSystrayNotifyIcon.Icon = new Icon(this.Icon, this.Icon.Width, this.Icon.Height);
//this.theSystrayNotifyIcon.ContextMenuStrip = this.theContextMenuStrip;
this.theSystrayNotifyIcon.Visible = true;
this.theSystrayNotifyIcon.DoubleClick += new EventHandler(theSystrayNotifyIcon_DoubleClick);
..
..
 
private void theSystrayNotifyIcon_DoubleClick(object sender, EventArgs e)
{
   if (this.Visible)
   {
      this.Hide();
   }
   else
   {
      this.Show();
      this.BringToFront();
      this.Activate();
   }
}



могут работать ...

отсылка к : https://social.msdn.microsoft.com/Forums/windows/en-US/30fc344e-a24c-4259-812b-cfd35f7c0d0a/how-can-i-make-a-program-run-in-the-background?форум=winforms[^]


[no name]

Это не то, о чем спрашивал ОП. Он также не показывает и не дает никаких разъяснений по поводу запуска его приложения беззвучно через windows.

Рейтинг:
0

Mohideenmeera

Если у вас есть доступ к изменению сведений реестра.
Вы можете использовать этот код

Объект registrykey Рег = регистр.Текущий пользователь.OpenSubKey("Software\корпорация Майкрософт\каталог\Windows\\CurrentVersion равное\\выполнить", правда);
reg. SetValue("имя вашего приложения", Application.Исполняемый путь.Метод toString());


Если у вас нет доступа к изменению сведений реестра, нам нужно сделать следующее
1. при событии загрузки напишите этот код:
этот.WindowState = FormWindowState.Свернутый;
этот.ShowInTaskbar = false;

2. Использование Приложение.ExecutablePath, скопируйте ваш exe-файл в папку запуска с помощью System.IO.File.Копировать


Mohideenmeera

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

CHill60

Этому посту уже почти 2 года. Я советую придерживаться предоставления ответов на более поздние сообщения, и желательно те, которые еще не имеют соответствующих решений. Как вы видите, многие из ваших решений отвергаются и сообщаются.