我的应用UI上有一个链接,可以使用System.Diagnostics.Process.Start()
启动网址。如果用户多次单击该链接,则会打开多个选项卡。
有没有办法,也许是命令行选项,仍然可以使用默认的网络浏览器,但是如果网址已经打开,它只是重新打开相同的标签?如果它不适用于所有可能的浏览器,那就没关系,但如果它至少适用于IE,Firefox和Chrome,那就太好了。
我对此表示怀疑,但由于我没有看到关于这个主题的任何其他问题/答案,我想我会问。
答案 0 :(得分:3)
这有点像一种解决方法,但它可能会让你开始。我使用过System.Diagnostics.Process.ProcessId。 作为一个例子我使用IE,稍后我将解释为什么我这样做。代码只是“快速而肮脏”,但我只是将其作为概念证明。
我创建了一个基本的WinForm应用程序,其中一个按钮将在IE中打开谷歌,如果它已经被应用程序打开,它将不再被打开。
我添加了System.Diagnostics参考。
public int ProcessID;
public Form1()
{
InitializeComponent();
}
private void MyButton_Click(object sender, EventArgs e)
{
if (ProcessID == null)
{
StartIE();
}
else
{
if (!ProcessIsRunning())
{
StartIE();
}
}
}
private bool ProcessIsRunning()
{
bool ProcessRunning = false;
foreach (Process p in Process.GetProcesses())
{
try
{
if (p.Id == ProcessID)
{
ProcessRunning = true;
}
}
catch { }
}
return ProcessRunning;
}
private void StartIE()
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "iexplore.exe";
proc.StartInfo.Arguments = "http://www.google.be";
proc.Start();
ProcessID = proc.Id;
}
这并不完全符合你的要求,但它可能是一个好的开始。我这样做的原因有几个,可能的选择是什么......
我希望这有助于让你继续前进。