Если запустился процесс, сообщить об этом - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Как можно реализовать такую задачу. Необходимо сообщать пользователю о том, запущен процесс или нет, в трее ( если запущен, то один статус там, допустим кружок зеленый, если не запущен, то красный). Как можно мониторить процессы в реальном времени? То есть приложение запускают в начале работы пк и работает до выключения. Делать при помощи таймера или бесконечно бегать циклом не вариант.

Решение задачи: «Если запустился процесс, сообщить об этом»

textual
Листинг программы
using System.Management;
...
ManagementEventWatcher startWatch, stopWatch;
 
void StartMonitoring()
{
    startWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace"));
    startWatch.EventArrived += startWatch_EventArrived;
    startWatch.Start();
 
    stopWatch = new ManagementEventWatcher(new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace"));
    stopWatch.EventArrived += stopWatch_EventArrived;
    stopWatch.Start();
}
 
void StopMonitoring()
{
    if (startWatch != null)
    {
        startWatch.Stop();
        startWatch.EventArrived -= startWatch_EventArrived;
        startWatch = null;
    }
    if (stopWatch != null)
    {
        stopWatch.Stop();
        stopWatch.EventArrived -= stopWatch_EventArrived;
        stopWatch = null;
    }
}
 
static void startWatch_EventArrived(object sender, EventArrivedEventArgs e)
{
    Console.WriteLine("Process started: {0}", e.NewEvent.Properties["ProcessName"].Value);
}
 
static void stopWatch_EventArrived(object sender, EventArrivedEventArgs e)
{
    Console.WriteLine("Process stopped: {0}", e.NewEvent.Properties["ProcessName"].Value);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.786 из 5
Похожие ответы