Обнаружить выход процесса в C# - PullRequest
0 голосов
/ 11 марта 2020

У меня есть приложение, которое

Process.Start()

запускает другое приложение firefox .exe. Я хочу дождаться окончания этого приложения (процесс умирает) и продолжить выполнение (пример: показать окно сообщения). Может быть несколько экземпляров приложения 'firefox .exe', запущенных одновременно.

Я пробовал WaitForExit и HasExited, но он возвращает true сразу после firefox запуска процесса, так что окно сообщений отображается немедленно. Как я могу показать окно сообщения в этой ситуации.

Обновление 1: Я пробовал это:

Process browser = new Process();
browser= Process.Start(@"dist\bin\firefox.exe");
browser.StartInfo.UseShellExecute = false;
browser.WaitForExit();
MessageBox.Show("AAAA!!!");

и HasExited аналогично EventRaising.

Обновление 2:

Я пробовал многие простые программы, такие как Notepad.exe, cmd.exe ... Все они работали хорошо. Я думаю, что Firefox вызывает другой процесс перед запуском основного процесса и закрытием исходного процесса. Как я могу обойти эту проблему.

1 Ответ

0 голосов
/ 11 марта 2020

Если вы можете быть уверены, что экземпляр firefox уже не запущен, вы можете просто использовать Process.GetProcessesByName("firefox"); и использовать WaitForExit для этих процессов.

Если вы хотите обрабатывать несколько одновременных экземпляров firefox, которые у вас есть небольшая проблема, поскольку firefox управляет несколькими процессами по-своему. Когда вы запускаете firefox, он может просто попросить существующий процесс firefox создать новое окно, а затем выйти. Поэтому вам нужно будет обнаружить новый windows и отслеживать, когда это окно закрыто. Я не думаю, что есть какой-либо способ выполнить то, что вы хотите, просто ожидая процессов, по крайней мере, без сотрудничества с программой.

В конце концов, я бы попытался сделать все, что вы пытаетесь сделать, 1016 * другим способом. Возможно, вы можете разместить webcontrol внутри приложения? Или, возможно, вставьте копию Firefox Portable или другого автономного браузера в ваше приложение и запустите его вместо этого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...