C# определить является ли процесс фоновым

319
05 апреля 2017, 12:51

Получаю список все процессов командой

Process[] allProcess = Process.GetProcesses();

Далее через foreach достаю каждый процесс по отдельности. Как определить является ли процесс фоновым или же это приложение? Так же интересуют альтернативные способы получения информации о процессах. Возможно через вин апи можно?

UpdAte: Не идеально конечно, но лучше чем ничего.

Хотя foreach перебирает примерно полминуты. (Возможно у меня слишком много процессов). Есть ли более быстрый способ?

Answer 1

Проверьте свойство 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.

READ ALSO
В чем разница между разработкой на C# в winforms и UWP?

В чем разница между разработкой на C# в winforms и UWP?

Расскажите в чем разница при разработке программы на C# в winforms и UWP? Есть ли разница в написании кода и если да то насколько? В данном вопросе...

247
Asp Net Core на IIS работает только на localhost

Asp Net Core на IIS работает только на localhost

Как настроить IIS+Asp Net Core для доступа из интернета? На данный момент доступ есть только с localhost- остальным запросам сервер выдаёт ошибкуКак...

289
Как в диспетчере задач , сделать по нажатию кнопки - открытие файлового окна?

Как в диспетчере задач , сделать по нажатию кнопки - открытие файлового окна?

Нужно чтоб в моем диспетчере задач, при нажатии на кнопку, открывалось файловое окно выбора (для запуска процесса), выбираю файл или что-то...

324
Как уменьшить ширину кнопки для Windows Phone 8.1?

Как уменьшить ширину кнопки для Windows Phone 8.1?

Мне нужно разместить в своем приложении квадратную кнопку, но уменьшить ширину меньше дефолтной не получается (увеличить можно)Это вообще...

235