提问人:Andrew G. Johnson 提问时间:5/26/2009 更新时间:8/27/2010 访问量:240
如何在 VB.NET 中导航到同一 MSIE 窗口中的不同网页
How can I navigate to different webpages in the same MSIE window in VB.NET
问:
我有打开一个新窗口的代码,但我希望能够编辑同一个窗口。
System.Diagnostics.Process.Start("iexplore.exe", "http://www.live.com")
答:
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
按照难度增加和控制/功率增加的顺序:
- 将输入文本发送到 IE 进程。Alt-D 将焦点放在导航栏上,然后是 URL,然后是 ENTER。
- 使用 MSAA 查找导航栏并发送文本,如上所述。
- 使用 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 首选项中更改即可。
评论