我试图在我的 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 的两个面板中?我非常感谢任何建议。谢谢。