Как проверить, открыты ли и активны ли 2 или 3 приложения в C#

#c#

Вопрос:

 void check() {  Process[] processes = Process.GetProcessesByName("app name");  if (processes.Length == 0)  {  //Not Running  }  else  {  //Is running  }  

как проверить, открыты ли 2 приложения vlc и Блокнот, например

Комментарии:

1. Так что же произошло? Где ты застрял?

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

3. добавьте весь свой полный проверенный код

4. Я хочу проверить примерно 3 или 5 игр, которые открываются, и проверять их каждые 5 секунд, открыты они или нет

Ответ №1:

Вы можете попробовать выполнить запрос с помощью Linq:

 using System.Diagnostics;  using System.Linq;   ...   string[] toFind = new [] {  "vlc",   "Notepad"  };   // If all processes mentioned in toFind are found   bool AllAreFound = !toFind  .Except(Process  .GetProcesses()  .Where(process =gt; !process.HasExited)  .Select(process =gt; process.ProcessName),   StringComparer.OrdinalIgnoreCase)  .Any();  

Возможно, вы захотите добавить

 .Where(process =gt; process.MainWindowHandle != IntPtr.Zero)  

если «открытый и активный» процесс также означает «имеет главное окно»,

Правка: Если вы хотите просто запросить один процесс, одного Any будет достаточно:

 private static bool HasRunningProcess(string processName) =gt; Process  .GetProcesses()  .Any(process =gt; string.Equals(processName,   process.ProcessName,   StringComparison.OrdinalIgnoreCase) amp;amp;  !process.HasExited amp;amp;  process.MainWindowHandle != IntPtr.Zero);   

Тогда вы можете поставить

 if (HasRunningProcess("vlc")) {  ...  }   else if (HasRunningProcess("Notepad")) {  ...  }   

Комментарии:

1. спасибо, Дмитрий. У меня есть еще один вопрос, как это сделать, когда он находит vlc, делайте что-то, а когда находит Блокнот, делайте что-то еще