Как загрузить два профиля Chrome на две панели в C# WinForm?

Я пытаюсь открыть два профиля Chrome в своем приложении winform на С#. Я использую следующий код для загрузки профиля 1 в панель 1, он работает хорошо.

       private System.Diagnostics.Process pDocked;
 private IntPtr hWndOriginalParent;
 private IntPtr hWndDocked;

 private System.Diagnostics.Process pDocked2;
 private IntPtr hWndOriginalParent2;
 private IntPtr hWndDocked2;

       if (hWndDocked != IntPtr.Zero) 
                return;
            
            var url = "www.google.com";
            var process = new Process();

            process.StartInfo = new ProcessStartInfo("chrome.exe");
            process.StartInfo.Arguments = url + @" --profile-directory=""Profile 1""";                

            process.Start();

            pDocked = process;

            while (hWndDocked == IntPtr.Zero)
            {
                pDocked.WaitForInputIdle(1000); 
                pDocked.Refresh();             
                if (pDocked.HasExited)
                {
                    return; 
                }
                hWndDocked = pDocked.MainWindowHandle;  
            }
            
            hWndOriginalParent = SetParent(hWndDocked, panel1.Handle);
            

Но когда я пытаюсь загрузить профиль 2 на панель 2, он всегда открывается над панелью 1 (а не внутри нее). Он имеет тот же размер, что и профиль 1, но открывается вне приложения. Я не уверен, что не так с моим кодом.

Вот код, который я использую для профиля 2

        if (hWndDocked2 != IntPtr.Zero) 
                return;
            
            var url2 = "www.bing.com";
            var process2 = new Process();
            
            process2.StartInfo = new ProcessStartInfo("chrome.exe");

            process2.StartInfo.Arguments = url2 + @" --profile-directory=""Profile 2""";                

            process2.Start();

            pDocked2 = process2;

            while (hWndDocked2 == IntPtr.Zero)
            {
                pDocked2.WaitForInputIdle(1000); 
                pDocked2.Refresh();              
                if (pDocked2.HasExited)
                {
                    return; 
                }
                hWndDocked2 = pDocked2.MainWindowHandle;  
            }
            
            hWndOriginalParent2 = SetParent(hWndDocked2, panel2.Handle );

Кстати, когда я загружаю другое приложение (например, notepad.exe) в panal2, оно загружается нормально. Кажется, это не работает только тогда, когда я дважды загружаю одно и то же приложение (например, хром в моем случае) в WinForm. Однако я предполагаю, что каждый профиль хрома рассматривается как отдельное приложение?

Может ли кто-нибудь помочь мне узнать, можно ли загрузить эти два профиля Chrome в две панели в одной и той же WinForm? Я был бы очень признателен за любое предложение. Спасибо.

0 ответов

Другие вопросы по тегам