Получение ID нескольких процессов

239
12 мая 2017, 14:00

Нужно получить ID определенных процессов.

Process[] processes = Process.GetProcessesByName("winword, excel, chrome");
List<string> list = new List<string>(); 
list.Add(processes[0].ProcessName.ToString() + " " + processes[0].Id.ToString();); 

Если указать поиск по одному процессу - все работает, а если указываешь несколько процессов - ошибка. Подскажите, что нужно сделать?

Answer 1

Пожалуйста, ознакомьтесь с документацией по Process.GetProcessesByName()

Как мы видим, в данном случае вы пытаетесь получить список процессов с названием winword, excel, chrome (которого, естественно, нет) и по всей видимости валитесь с ArgumentOutOfRangeException при попытке достучаться до первого элемента пустой коллекции. Учтите, что с одним названием может быть несколько процессов (два хрома запущено, например).

Итак, по всей видимости это то, что вам требуется:

var processNames = new [] { "winword", "excel", "chrome" };
var list = new List<string>(); 
foreach (var processName in processNames)
{
    var process = Process.GetProcessesByName(processName).FirstOrDefault();
    if (process != null)
    {
        list.Add($"{process.ProcessName} {process.Id}");
    }
}
READ ALSO
Управления музыкой через TrackBar

Управления музыкой через TrackBar

Использую функции WindowsMediaPlayer для создания плеераЕсть TrackBar который отображает текущее время композиции

192
Как отобразить форму в контроле?

Как отобразить форму в контроле?

Есть groupBox в который я хочу добавить форму

212
Ошибка в String Format

Ошибка в String Format

Есть несложный код, цель которого форматировать и вывести результат с 2 знаками после запятой:

214
Как установить библиотеку bass.dll?

Как установить библиотеку bass.dll?

Объясните как подключить библиотеку bassdll для C# Visual Studio 2017

333