0

我试图在我的 C# winform 应用程序中打开两个 chrome 配置文件。我使用以下代码将配置文件 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 时,它可以正常加载。似乎只有当我将相同的应用程序(如我的情况下的 chrome)两次加载到 WinForm 时它才不起作用。但是,我假设每个 chrome 配置文件都被视为一个单独的应用程序?

谁能帮我看看是否可以将这两个 chrome 配置文件加载到同一个 WinForm 的两个面板中?我非常感谢任何建议。谢谢。

4

0 回答 0