如何在启动进程后将焦点设置回调用表单 (Chrome)
How to Set Focus Back To Calling Form After Starting A Process (Chrome)
我使用 Process.Start() 从程序中打开 Chrome 浏览器 window,但新打开的 chrome 浏览器选项卡覆盖了屏幕。但我希望我的应用程序在创建这些 chrome 个浏览器选项卡后保持其焦点。
我将打开一个浏览器 window,但多个 chrome 选项卡显示不同的 URL。
这是我试过的,与 How to set focus back to form after opening up a process (Notepad)? 的答案相似。但对我不起作用。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd)
// this code will get called several times with a different URL in Arguments property
Process p = new Process();
p.StartInfo = new ProcessStartInfo("Chrome.exe");
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = "https:/google.com";
p.Start();
p.WaitForInputIdle();
SetForegroundWindow(this.Handle);
只是添加一个短暂的延迟似乎对我来说效果很好:
private void button1_Click(object sender, EventArgs e)
{
OpenUrl("https:/google.com");
}
private async void OpenUrl(string url)
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo("Chrome.exe");
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = url;
p.Start();
p.WaitForInputIdle();
await Task.Delay(50);
SetForegroundWindow(this.Handle);
}
我使用 Process.Start() 从程序中打开 Chrome 浏览器 window,但新打开的 chrome 浏览器选项卡覆盖了屏幕。但我希望我的应用程序在创建这些 chrome 个浏览器选项卡后保持其焦点。
我将打开一个浏览器 window,但多个 chrome 选项卡显示不同的 URL。
这是我试过的,与 How to set focus back to form after opening up a process (Notepad)? 的答案相似。但对我不起作用。
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd)
// this code will get called several times with a different URL in Arguments property
Process p = new Process();
p.StartInfo = new ProcessStartInfo("Chrome.exe");
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = "https:/google.com";
p.Start();
p.WaitForInputIdle();
SetForegroundWindow(this.Handle);
只是添加一个短暂的延迟似乎对我来说效果很好:
private void button1_Click(object sender, EventArgs e)
{
OpenUrl("https:/google.com");
}
private async void OpenUrl(string url)
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo("Chrome.exe");
p.StartInfo.CreateNoWindow = true;
p.StartInfo.Arguments = url;
p.Start();
p.WaitForInputIdle();
await Task.Delay(50);
SetForegroundWindow(this.Handle);
}