Как открыть несколько экземпляров браузеров chrome в приложении c# windows form
я новичок в этой технике, так что любезно игнорируйте, если я сделаю какую-нибудь ошибку. Я разрабатываю приложение, в котором пользователи могут входить в разные учетные записи в разных экземплярах Chrome. Я уже написал кусок кода и открыл несколько окон chrome в режиме инкогнито, но когда я помещаю их в свое приложение C#, он говорит, что процесс вышел, поэтому запрошенная информация недоступна...
Мой код таков
Что я уже пробовал:
try { Process process = new Process(); process.StartInfo.FileName = @"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"; process.StartInfo.Arguments = "http://www.google.com/" + " --new-window --incognito "; process.Start(); if (!process.HasExited) { Thread.Sleep(5000); SetParent(process.MainWindowHandle, panel2.Handle); MoveWindow(process.MainWindowHandle, -3, -70, panel2.Width + 3, panel2.Height + 70, false); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OKCancel, MessageBoxIcon.Error); } [DllImport("user32.dll")] static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent); [DllImport("USER32.dll")] private static extern bool MoveWindow(IntPtr hwnd, int x, int y, int cx, int cy, bool repaint);
Richard MacCutchan
У вас есть звонок, чтобы process.Kill();
что, скорее всего, и является проблемой.
Member 11095926
Спасибо Ричарду, я обновил свой код, у него все еще есть проблема... он прекрасно открывает первый экземпляр chrome и помещает его внутрь панели, он также открывает второй экземпляр, но не помещает его внутрь другой панели.
F-ES Sitecore
Если вы хотите, чтобы второй экземпляр находился в другой панели, то вам нужно дать дескриптор этой панели. Ваш код жестко закодирован, чтобы всегда использовать panel2
Member 11095926
Я сделал то же самое, но он говорит, что процесс вышел, поэтому запрошенная информация недоступна..
Member 11095926
если процесс будет убит, окно chrome также будет удалено, это не требуется.
Richard MacCutchan
Вот что я тебе говорил.
Richard Deeming
Вместо того чтобы пытаться взломать Chrome в вашем процессе, почему бы не попробовать CefSharp[^Это позволит вам встроить элемент управления браузером Chromium непосредственно в ваше приложение.
Member 11095926
я пробовал это раньше, но это не позволило мне открыть два браузера chromium с отдельными кэшами... каждый раз после входа в систему я пытался удалить кэш, и система говорила, что файл используется, поэтому он не может быть удален.