我正在使用以下代码在Internet Explorer中打开网站
ProcessStartInfo startInfo = new ProcessStartInfo
{
Arguments = "http://www.example.com",
FileName = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe",
RedirectStandardInput = true,
UseShellExecute = false
};
System.Diagnostics.Process process = System.Diagnostics.Process.Start(startInfo);
考虑到已经打开浏览器,我如何在新标签中打开我的网站而不是新的浏览器?
那么,
我们正在构建一个用户可以使用2个选项的应用程序:
1 - 使用默认浏览器。
2-使用以下浏览器之一:IE,谷歌浏览器和Firefox(暂时)。
在选择要在其应用程序中使用的浏览器之后,他必须选择是否要在新窗口或新选项卡中打开请求的页面。
例如:如果他选择带有新选项卡选项的IE,那么系统将尝试查找程序打开的最后一页并在存在时刷新它,如果不存在,他将在新选项卡中打开它。
关于IE浏览器,我认为EricLaw -MSFT帮助我找到了打开新选项卡和新窗口的方法,我仍然需要知道如何获得打开的选项卡(已经由我的程序打开)并刷新需要。
我仍然需要为Firefox和谷歌浏览器做同样的事情。
感谢您的回答,并为我糟糕的英语再次感到抱歉:)
答案 0 :(得分:8)
您可以简单地使用:
Process.Start("http://www.mysite.com");
这将不必须在IE中打开,但在用户默认浏览器中作为新选项卡(如果浏览器支持它),这可能是用户想要的东西;)
答案 1 :(得分:1)
除非iexplore.exe有一些你可以传递给它的参数,否则我不确定你是否可以。
您所拥有的所有代码都是启动新的IE流程,因此我无法看到它如何能够使用已经运行的流程。
出于兴趣,如果您知道已经有浏览器在运行,为什么要使用此方法进行导航?
答案 2 :(得分:1)
参考Interop.SHDocVw.dll
InternetExplorer ie = null;
SHDocVw.ShellWindows allBrowser = new SHDocVw.ShellWindows();//gives all browsers
int browserCount = allBrowser.Count - 1;//no . of browsers
while (browserCount >= 0)
{
ie = allBrowser.Item(browserCount) as InternetExplorer;
if (ie != null && ie.FullName.ToLower().Contains("iexplore.exe"))//all IE will have this name
{
ie.Navigate2("http://www.example.com", 0x1000);//0x1000 is the flag to open IE in new tab
break;
}
browserCount--;
}