Получаю список все процессов командой
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.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники