2010-12-15 51 views
2

我试图通过如何在IE的当前窗口中打开 - C#

System.Diagnostics.Process.Start("iexplore.exe", uniquePartOfUrl); 

到在IE中打开一些然而,这并不占事实上窗口已经打开,如果是那么我只想使用它。这怎么能做到?

+0

为什么你需要一个窗口句柄? IE的API是COM,如果你想控制新的窗口/标签,你应该要求IWebBrowser2(尽管你可以从IWebBrowser2获得窗口/标签句柄) – 2010-12-15 20:42:19

回答

0

在CodeProject上,存在着一个项目,“Capturing the Running IE Instances in C#

它可以让你做到这一点的方法之一。

使用WIN32 API,可以枚举打开的窗口,并对它们进行过滤以获取IE的运行实例。

推荐您自动检索

0

你可以尝试这样的事情:

var p = new System.Diagnostics.Process(); 
var s = new System.Diagnostics.ProcessStartInfo(uniquePartOfUrl); 
s.UseShellExecute = true; 
s.WindowStyle = ProcessWindowStyle.Normal; 
p.StartInfo = s; 
p.Start(); 

我没有编译器方便,现在对其进行测试,但这个想法是,它应该简单地告诉操作系统“打开此网址”和让操作系统决定如何使用现有的窗口,具体取决于应用程序。值得一试。

4

IMO,打开一个网页,最好的方法是使用下面的语法:

Process.Start("http://www.mysite.com"); 

这样的操作系统将在用户的默认浏览器中打开它,并使用浏览器选项卡功能,如果它有该能力。当我已经选择了我想要使用的浏览器时,没有任何事情让我更加恼火(好吧,也许有些事情会这样做),这些程序迫使我无缘无故地使用特定的浏览器。在这里尊重用户的决定是件好事。

0

重用IE的现有的窗口,你可以在2种不同的方式

  1. 找到IE的当前实例,然后使用该实例中打开它接近它。这由@LaGrandMere提供的答案覆盖

  2. 使用内置设置设置IE以使其自身重用。要使用此方法,您可以按照this Microsoft support article中给出的说明进行操作。

相关问题