我可以从winforms应用程序中定位浏览器实例吗?

时间:2009-04-13 17:10:04

标签: winforms browser

我们正试图将我们的产品与公司中的另一产品进行松散整合。我们有一个窗户和网络客户端,他们完全在网上。简而言之,他们为我们制作了一个接受一些参数的登陆页面,我们只需对该URL进行GET即可将用户转移到另一个应用程序中。

其他应用程序中存在会话状态问题,打开多个浏览器会导致保存回应用程序的密钥在会话中被覆盖。我知道在网络版中它是小菜一碟:

window.open('http://theotherappsurl.com', 'otherapp');

通过传递窗口名称参数,它始终在同一个选项卡/窗口中打开。

棘手的问题是在winforms应用程序中,我正在做的是将默认浏览器启动到URL:

Process.Start('http://theotherappsurl.com');

这让我想到了我的问题 - 从winforms启动浏览器窗口的现有实例是否有任何方法?有没有办法用这种方式命名窗口?任何特定于IE的东西(我不支持这个,但我们的产品是windows / IE-only)?

2 个答案:

答案 0 :(得分:0)

我不知道你是否认为这有点过分,但是你可以创建一个简单的winform应用程序来包装Web浏览器控件,使其成为单个实例应用程序,并调用它而不是直接调用IE。

答案 1 :(得分:0)

以下工作几乎令人作呕 - 有一个WebBrowser控件的静态实例,并向其添加HTML,使用命名窗口执行window.open()。它与在现有浏览器实例中执行的操作相同...甚至不需要控制树的一部分!

所以现在除了“定位”一个浏览器窗口(我们甚至认为不可能)之外,我的老板还希望它能够将该浏览器实例推向前进。我将window.open(...)更改为window.open(...)。focus()并且它可以在我的机器上运行(Server 2008 x64 / IE8),但显然不在他的(XP / IE7)上。是否有机会找到解决方案或具体原因?