Получаю список все процессов командой
Process[] allProcess = Process.GetProcesses();
Далее через foreach достаю каждый процесс по отдельности. Как определить является ли процесс фоновым или же это приложение? Так же интересуют альтернативные способы получения информации о процессах. Возможно через вин апи можно?
UpdAte: Не идеально конечно, но лучше чем ничего.
Хотя foreach перебирает примерно полминуты. (Возможно у меня слишком много процессов). Есть ли более быстрый способ?
Проверьте свойство MainWindowHandle
Process[] allProcess = Process.GetProcesses();
foreach (var p in allProcess)
{
Console.WriteLine(p.ProcessName + " " + (p.MainWindowHandle == IntPtr.Zero ? "[background]": "[non-background]"));
}
Если его значение равно нулю (IntPtr.Zero), то процесс является фоновым.
Хотя foreach перебирает примерно полминуты. (Возможно у меня слишком много процессов). Есть ли более быстрый способ?
Попробуйте распараллелить поиск процессов, например при помощи методов класса Parallel, либо PLINQ.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Расскажите в чем разница при разработке программы на C# в winforms и UWP? Есть ли разница в написании кода и если да то насколько? В данном вопросе...
Как настроить IIS+Asp Net Core для доступа из интернета? На данный момент доступ есть только с localhost- остальным запросам сервер выдаёт ошибкуКак...
Нужно чтоб в моем диспетчере задач, при нажатии на кнопку, открывалось файловое окно выбора (для запуска процесса), выбираю файл или что-то...
Мне нужно разместить в своем приложении квадратную кнопку, но уменьшить ширину меньше дефолтной не получается (увеличить можно)Это вообще...