C# 打开Internet Explorer窗口,其中正好有3个选项卡

C# 打开Internet Explorer窗口,其中正好有3个选项卡,c#,internet-explorer,firefox,shdocvw,C#,Internet Explorer,Firefox,Shdocvw,我和一个同事在做一个项目,我们一直在桌子上绞尽脑汁想弄明白这个问题。我们的要求是有一个新的Internet Explorer浏览器弹出一个网页,然后附加两个标签。我们找到了一个可以在我同事的电脑上运行的解决方案,但当我们在我的电脑和另一位同事的电脑上尝试时,它无法运行。到目前为止,我们拥有的: using SHDocVw; ... ShellWindows iExplorerInstances = new ShellWindows(); Process.Start("IExplore

我和一个同事在做一个项目,我们一直在桌子上绞尽脑汁想弄明白这个问题。我们的要求是有一个新的Internet Explorer浏览器弹出一个网页,然后附加两个标签。我们找到了一个可以在我同事的电脑上运行的解决方案,但当我们在我的电脑和另一位同事的电脑上尝试时,它无法运行。到目前为止,我们拥有的:

using SHDocVw;

...

ShellWindows iExplorerInstances = new ShellWindows();    
Process.Start("IExplore.exe", "www.reddit.com");
Thread.Sleep(5000);
string url = "http://www.google.com";
IEnumerator enumerator = iExplorerInstances.GetEnumerator();
enumerator.MoveNext();
InternetExplorer iExplorer = (InternetExplorer)enumerator.Current;
iExplorer.Navigate(url, 0x800); //0x800 means new tab 
url = "http://www.banana.com";
enumerator = iExplorerInstances.GetEnumerator();
enumerator.MoveNext();
iExplorer = (InternetExplorer)enumerator.Current;
iExplorer.Navigate(url, 0x800); //0x800 means new tab 

同样,这只在他的计算机上正常工作。对我来说,当我尝试运行此代码时,它会正确地打开Internet Explorer浏览器,但即使我使用的是InternetExplorer对象,它也会打开Firefox中的选项卡。我深入课堂,试着把我能找到的有用的东西打印出来。InternetExplorer对象中的name属性是“Windows资源管理器”。我读了更多关于ShellWindows实际功能的内容,这是有道理的,但对我没有帮助。这似乎意味着它通过InternetExplorer对象而不是Internet Explorer打开了我的默认浏览器。我的同事将Chrome作为默认浏览器,我也得到了不同的结果。我将默认浏览器切换到Chrome,看看这是否是问题所在,但随后两个额外的选项卡在Chrome中打开。我真正需要的是打开一个Internet Explorer浏览器,它有3个选项卡,每个选项卡都有自己的URL。非常感谢您的帮助。

看起来这家伙有您想要的解决方案:


是否允许在文件中打开它?如果是这样,您可以尝试在一个文件上打开它,该文件将从同一实例打开多个页面,这将打开多个选项卡。我不确定这种行为有多可靠……实际的代码将嵌入到托盘应用程序中,当满足特定条件时,该应用程序将弹出这些窗口。它将安装在多台计算机上,我不确定使用文件是否是实现的最佳选择。这些是一些奇怪的要求,似乎与良好的用户体验背道而驰。您不能将数据源组合在一个页面中显示吗?更具体地说,此应用程序将在执行与客户交互的特定操作的自动化机器上运行。这些页面应该会弹出三个网页(一个有实际的客户数据,另外两个是基于DDE中的数据集的谷歌搜索),这样任何登录机器的人都可以查看所有这些数据,而无需挖掘。这些要求很奇怪,但这正是他们付钱给我们的原因。那么为什么不让IE成为特定机器上的默认浏览器呢?