В настоящее время я делаю программу, которая, по сути, должна открыть ссылку в Edge, сделать снимок экрана и снова закрыть браузер.
1-й выпуск:
Я могу нормально открыть браузер, но он просто открывает новую вкладку вместо нового окна, если браузер уже открыт. Я не хочу вмешиваться в уже существующий открытый браузер Edge, который могут использовать наши пользователи, а вместо этого открываю совершенно новый экземпляр, делаю снимок экрана и снова закрываю его.
Я попытался использовать следующее, но безуспешно - он все еще просто открывает новую вкладку
Process proc = new Process();
proc.StartInfo.FileName = "microsoftedge.exe";
proc.StartInfo.Arguments = "http://172.31.44.1/#/cameras" + " --new-window";
proc.Start();
2-й выпуск:
При попытке убить процесс с помощью proc.Kill()
я получаю system.invalidoperationexception не может обработать запрос, так как процесс завершился , но браузер все еще открыт
Любая помощь приветствуется! заранее спасибо
Пытался найти решение для уничтожения порожденного процесса MS Edge, но безуспешно. Похоже, что Edge порождает несколько процессов в зависимости от установленных расширений браузера и т. д. Простое получение процесса по идентификатору (proc.Id), а затем вызов .Kill() или запуск процесса taskkill.exe /PID <ID> /f также не сработало. . Возвращенный proc.Id не соответствует фактическому PID браузера при просмотре в диспетчере задач.
Проверь это:
с помощью System.Diagnostics;
Process proc = new Process();
proc.StartInfo.FileName = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
proc.StartInfo.Arguments = " --new-window http://google.com";
proc.Start();
Прохладно! Кажется, это помогло открыть новый экземпляр Edge :) У вас есть идеи, как я могу снова закрыть его? Я все еще получаю исключение, как указано в вопросе
Я много ищу. Кажется, что Edge создает еще несколько процессов из соображений стабильности. Также стартовый процесс завершается сразу после создания других процессов.
Процесс, который инициализирует и показывает новое окно Edge, не является тем же процессом, которому принадлежит это окно после его представления. В этот момент процесс-заглушка уже завершился. -- Вы можете использовать UIAutomation, чтобы получать уведомления об открытии нового окна, сравнивать его класс, заголовок и т. д., чтобы определить, является ли оно тем, что вам нужно, а затем закрыть его, когда закончите. -- См. WindowPattern.WindowOpenedEvent -- Другим способом, если это возможно, является использование WebView2 для отображения страницы.