如何在 VB.NET 中导航到同一 MSIE 窗口中的不同网页

How can I navigate to different webpages in the same MSIE window in VB.NET

提问人:Andrew G. Johnson 提问时间:5/26/2009 更新时间:8/27/2010 访问量:240

问:

我有打开一个新窗口的代码,但我希望能够编辑同一个窗口。

System.Diagnostics.Process.Start("iexplore.exe", "http://www.live.com")
vb.net

评论


答:

0赞 joshcomley 5/26/2009 #1

我不确定确切,但一个好的开始指针可能是获取您感兴趣的窗口的句柄:

http://www.pocketpcdn.com/articles/dotnetcf_hwnd.html

然后分别调查可以向 IE 发送哪些互操作消息以更改选项卡 X 中的 URL

评论

0赞 joshcomley 5/26/2009
为什么这被否决了?!听起来你想做一些特定于IE的事情,据我所知,IE没有.NET接口
0赞 John Saunders 5/26/2009
IE 确实具有 COM 接口,并且 COM 可从 .NET 使用。
0赞 Bruce 5/26/2009 #2

按照难度增加和控制/功率增加的顺序:

  1. 将输入文本发送到 IE 进程。Alt-D 将焦点放在导航栏上,然后是 URL,然后是 ENTER。
  2. 使用 MSAA 查找导航栏并发送文本,如上所述。
  3. 使用 MSAA 获取对浏览器的 IHTMLDocument 访问权限,然后以编程方式驱动浏览器以及相关接口。

我不知道您的确切情况,但是如果您可以托管自己的 MSHTML 实例或 WebBrowser 控件,那么获取接口和执行上面 #3 中提到的操作将变得更加容易;跨进程做这些事情充满了危险。

我刚刚在网上搜索了一下,发现了一个 WatiN 工具,它显然包装了很多这项工作;也许这对你有用。

0赞 Chromableed Studios 6/13/2009 #3

如果您使用的是 2008,则可以使用以下功能创建第二个窗体,然后添加 Webbrowser 控件

然后可以通过

myForm.show

然后可以使用

Webbrowser1.Url = New Uri("http://www.google.com")
0赞 Konrad Rudolph 6/26/2010 #4

使用以下代码:

System.Diagnostics.Process.Start("http://www.live.com")

也就是说:不要直接调用——让系统弄清楚要打开哪个默认浏览器。iexplore.exe

这可能会产生两种行为:

  • 要么在现有的 Internet Explorer 窗口中打开一个新选项卡,
  • 或者创建一个新窗口。

重要的一点是,这取决于可以在 Internet Explorer 应用程序中控制的首选项。如果打开了一个新窗口,那么这是用户选择的设置 - 不要试图覆盖它:覆盖用户的首选项被认为是不礼貌的。

如果用户不希望打开新窗口,只需在 Internet Explorer 首选项中更改即可。