Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
87 / 30 / 19
Регистрация: 16.01.2015
Сообщений: 250
1

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

01.07.2016, 09:06. Показов 2102. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Как можно реализовать такую задачу. Необходимо сообщать пользователю о том, запущен процесс или нет, в трее ( если запущен, то один статус там, допустим кружок зеленый, если не запущен, то красный). Как можно мониторить процессы в реальном времени? То есть приложение запускают в начале работы пк и работает до выключения. Делать при помощи таймера или бесконечно бегать циклом не вариант.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2016, 09:06
Ответы с готовыми решениями:

Найти номера всех элементов больше 10, если таких нет, то сообщить об этом
Создать одномерный массив,содержащий целые числа.Найти номера всех элементов больше 10,если таких...

Найти и вывести на экран номера всех отрицательных элементов, если таких нет, то сообщить об этом
Дан одномерный массив. Найти и вывести на экран номера всех отрицательных элементов, если таких...

Дано предложение. Определить порядковый номер первой встреченной буквы 'к', если буквы нет, сообщить об этом
C# Дано предложение. Определить порядковый номер первой встреченной буквы 'к'. Если такой буквы...

Найти первый положительный элемент. Если положительных элементов нет - сообщить об этом
Задача такова: А(i) - случайные числа Найти первый положительный элемент. Если положительных...

2
Эксперт .NET
5871 / 4748 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
01.07.2016, 11:06 2
Лучший ответ Сообщение было отмечено Hikaru как решение

Решение

Hikaru,
как вариант:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public ManagementEventWatcher watcher;
 
private void Form1_Load(object sender, EventArgs e)
{
    watcher = new ManagementEventWatcher("Select * From Win32_ProcessTrace");
    watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
}
 
void watcher_EventArrived(object sender, EventArrivedEventArgs e)
{
    //здесь смотрите e.NewEvent
    //например: e.NewEvent["ProcessName"].ToString() - имя процесса
}
 
private void button1_Click(object sender, EventArgs e)
{
    watcher.Start(); //включаем наблюдение
}
 
private void button2_Click(object sender, EventArgs e)
{
    watcher.Stop(); //выключаем
}
Понадобится ссылка на System.Management.dll и соответствующее пространство имен.
3
Администратор
Эксперт .NET
17019 / 13372 / 5217
Регистрация: 17.03.2014
Сообщений: 27,342
Записей в блоге: 1
01.07.2016, 11:49 3
Лучший ответ Сообщение было отмечено Hikaru как решение

Решение

Hikaru, начальную проверку можно сделать с помощью Process.GetProcessesByName, а мониторинг с помощью WMI (нужны права администратора):
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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);
}
1
01.07.2016, 11:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2016, 11:49
Помогаю со студенческими работами здесь

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

Найти и вывести на экран номера всех отрицательных элементов, если таких нет, то сообщить об этом.
2. Дан одномерный массив. Найти и вывести на экран номера всех отрицательных элементов, если таких...

Дано натуральное число x, найти max нечетную цифру. если нет нечётных цифр, сообщить об этом
дано натуральное число x найти max нечётную цифру. если нет нечётных цифр сообщить об этом Х=8354...

Строка S. Найти любое слово которое начинается и кончается на А. Если таких слов нет, то сообщить об этом.
Строка S. Найти любое слово которое начинается и кончается на А. Если таких слов нет, то сообщить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru