Если запустился процесс, сообщить об этом - 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);
}