2015-08-28 188 views
0

我想即无形导航,试过这种IE.Visible = false;但它实际上显示? C#

SHDocVw.InternetExplorer IE = new SHDocVw.InternetExplorer(); 
IE.Visible = false; 
IE.Navigate("http://example.org"); 

作品,但是,它实际上显示了IE窗口。什么是隐藏IE窗口的最佳方法?

+0

请问您的程序架构是否需要具体的IE?如果没有,您可以使用浏览器控件来静默导航。例如,如果您试图实现的唯一目的是发送带有IE用户代理字符串的HTTP请求以缓存特定网站或某些类似内容。您可以改用网页浏览器控制。 –

回答

3

来自文档: “当Windows Internet Explorer应用程序第一次创建时,它是隐藏的,在使用Navigate方法或GoSearch方法之后,它变得可见。

在导航后设置可见。

https://msdn.microsoft.com/en-us/library/aa752082(v=vs.85).aspx

http://forums.codeguru.com/showthread.php?512303-SHDocVw-InternetExplorerClass-visible-property-to-False-does-not-work-on-some-machine 看来,NavigateComplete事件也使窗口可见,所以它也应在该事件处理程序隐藏。

+0

尝试导航后添加。它仍然显示。 – user198989

+0

请注意链接底部的注释 - 可能是问题所在。 – PaulF

+1

看到这个链接,可能有助于http://forums.codeguru.com/showthread.php?512303-SHDocVw-InternetExplorerClass-visible-property-to-False-does-not-work-on-some-machine。您可能需要将其隐藏在NavigateComplete事件中。 – PaulF

0
Dim IDC As Object 
Dim IDCWin As Object 

Set IE = CreateObject("InternetExplorer.Application") 
Set IDC = CreateObject("Shell.Application") 

For Each IDCWin In IDC.Windows 

    If IDCWin.LocationURL = "YOUR WEBSITE" Then 
     IDCWin.Visible = False 

Next IDCWin 

这就是我使用它,它适用于我。我通过IE窗口循环,当它找到指定的URL时,它隐藏IE的这个实例。我将它用于通过excel操作的Web应用程序,但我不希望在使用过程中对用户可见。我希望这有帮助。

相关问题