调试SHDocVw.InternetExplorer.Quit没有关闭iexplore.exe进程

时间:2011-08-16 10:49:31

标签: debugging mshtml quit

我认为没有明确的答案,所以你如何解决这个问题?:

我的主应用程序(MicroStation插件)使用SHDocVw.InternetExplorer COM包装器启动IE,与其交互,在未使用时隐藏它(例如,当用户关闭窗口时将拦截并将InternetExplorer.Visible设置为false)。

当主应用程序关闭时,插件通过调用InternetExplorer.Quit关闭IE,但iexplore进程仍在运行(主应用程序关闭时IE被隐藏)。

我尝试过:

  • 调用Quit后调用InternetExplorer对象上的System.Runtime.InteropServices.Marshal.FinalReleaseComObject
  • 在Quit和FinalReleaseComObject
  • 之后将对InternetExplorer对象的引用设置为null
  • 在主应用程序退出之前确保父管理对象获取GC(检查是否已调用Finalize)
  • 创建测试控制台应用并尝试在那里重现问题。例如。当IE处于隐藏状态时尝试调用Quit。 (我无法重现问题,IE会在应用程序退出后立即关闭)

有趣的是,我无法重现在同一个主应用程序(MicroStation插件)中调用Quit的问题,但主应用程序正在运行时,而不是在退出事件处理代码中。当在其他地方调用时,Quit按预期关闭IE。

否则,InternetExplorer对象对我来说是不透明的。

还有其他方法可以调试此问题吗?

编辑:值得注意的是,主应用创建了一个UserControl并使IE窗口成为此UserControl的子窗口(使用SetWindowLong更改GWL_STYLE以允许窗口成为子窗口SetParent将UserControl设置为父级)。但是当IE被隐藏时(Quit尝试失败时),父窗口被设置为0。

谢谢!

0 个答案:

没有答案