这是谁的错误 - IE或Windows / .NET?

时间:2010-08-09 14:53:06

标签: .net windows internet-explorer process

当我运行这个,然后进入任务管理器并手动结束其中一个iexplore实例(有2个因为IE现在也使用多个进程)我看到一个错误弹出框,表示已经恢复了一个选项卡。但是,由于我的进程设置,iexplore本身是不可见的。因此,我不认为弹出气球恢复信息应该出现。这是IE的错误,在显示此消息之前没有检查它是否可见,或者这是Windows / .NET的错误阻止IE显示任何“窗口”(在这种情况下为气球)?

Process process = new Process
{
  StartInfo =
  {
     CreateNoWindow = false,
     FileName = "iexplore.exe",
     UseShellExecute = true,
     ErrorDialog = false,
     WindowStyle = ProcessWindowStyle.Hidden
  }
};

process.Start();

如果这是一个错误,我在世界上哪里报告?连接?

2 个答案:

答案 0 :(得分:1)

我很惊讶这种方法很有效,非控制台模式的应用程序通常会忽略所请求的WindowStyle。以tryepad.exe为例。

但是,这将是IE中的一个缺陷。除了将请求的窗口样式传递给已启动的进程之外,Process类没有其他功能。该进程通过WinMain()的nShowCmd()参数获取此请求。

Connect的IE有一个反馈渠道。但他们只接受IE9的报告,你必须申请。试图让IE6厌恶邮件,我猜。

答案 1 :(得分:1)

如果您想以正确的方式执行此操作,则应将CoCreateInstance() CLSID_InternetExplorer与IID_IWebBrowser2编写为互操作。您可以获得IWebBrowser2 at pinvoke.net的互操作。

这将创建一个不可见的IE实例,然后您可以使用IWebBrowser2::put_Visible(VARIANT_TRUE)使其在以后可见。