Я использую следующий код для перебора списка исполняемых путей браузеров и запуска каждого из них:
foreach (var browser in browsers)
{
var proc = new Process();
proc.StartInfo.FileName = browser.ExecutablePath;
proc.StartInfo.Arguments = "http://google.com";
proc.Start();
proc.WaitForExit();
Console.WriteLine(proc.ExitCode.ToString());
proc.Close();
}
Что нужно сделать: он должен открыть окно браузера с загруженным google.com и остановить приложение до закрытия окна. И он отлично работает как для IE, так и для Firefox, но не работает с Chrome.
Для Chrome proc
находится в состоянии Exit
сразу после запуска браузера, когда окно остается активным и видимым.
Я попытался использовать некоторые из команд командной строки хрома, включая --new-window
и --single-process
, но без успеха.
Вопрос в том, как заставить Google Chrome запускать процесс, в котором он запущен, поэтому можно было бы подождать, пока окно не будет закрыто?
Обновление
Просто чтобы прояснить вопрос:
- Я знаю, почему это не работает - потому что Chrome использует несколько процессов для разных вещей, таких как разные вкладки, плагины и т.д.
- Я попытался найти правильный процесс, глядя на дерево процессов, но ничего не нашел.
- Я не могу просто взять последний процесс, созданный хром, потому что это может быть процесс, созданный для зависания страницы, а не самой страницы.