c# - 如何从 Process.Start 打开指向同一浏览器窗口或选项卡的链接?

标签 c# .net winforms

我正在尝试从 Windows 窗体上的 LinkLabel 打开浏览器窗口。单击时,控制传递给 LinkClicked 事件,代码调用默认浏览器使用:

System.Diagnostics.Process.Start("http://www.google.com");

我希望能够单击链接(即多次运行“开始”),但只能单击同一个浏览器窗口或选项卡。当然,多次点击每次都会打开一个新的 Google 标签页。我知道如何使用如下链接指定命名窗口:

<a href="http://www.google.com" target="googlewin">Click Here!</a>

但是我如何在“开始”命令中执行此操作?

预计到达时间:我在“关于”表单上单击了 Internet Explorer 自己的可链接链接,它每次都会打开一个新窗口,所以也许连 Microsoft 都做不到。嗯。

最佳答案

对于 Internet Explorer,您可以使用 SHDocVw 程序集执行此操作。

无需使用 process.start,只需创建一个 SHDocVw.InternetExplorer 实例,并在需要时使用它在同一浏览器中导航。这是一个简单的例子。

private SHDocVw.InternetExplorer IE;

private void Form1_Load(object sender, EventArgs e)
  {
     IE = new SHDocVw.InternetExplorer();
     IE.Navigate("http://stackoverflow.com/");
     IE.Visible = true;
  }

private void button1_Click(object sender, EventArgs e)
  {
     IE.Navigate("http://google.com/");
  }

如果您特别希望使用 Process.start,那么对于 Internet Explorer,您可以遍历 SHDocVw.ShellWindows 以找到您希望用于导航的 Internet Explorer。

foreach (SHDocVw.InternetExplorer IE in new SHDocVw.ShellWindows()) {
    if (IE.FullName.ToLower.Contains("iexplore") & IE.LocationURL.ToLower.Contains("someurl")) {
        IE.Navigate("http://google.com/");
    }
}

关于c# - 如何从 Process.Start 打开指向同一浏览器窗口或选项卡的链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713991/

相关文章:

.net - EventArgs Cancel 如何在 FormClosing 事件中工作?

C# 文件到字典,但采用单词对

.net - ArrayOf 将 List<T> 与 WCF 休息服务一起使用时

c# - 如何实现 ClickOnce 更新策略以仅更新版本之间更改的文件?

C#:套接字没有正确接收消息?

c# - 需要初始化对象的新实例

winforms - 如何防止控件窃取焦点?

c# - ASP.net C#。多个页面合而为一

c# - 打印数据表的内容

c# - 是否可以复制某个控件的所有属性? (C# 窗口窗体)