VB.net关闭文件夹 - IE打开时不起作用

时间:2017-05-23 21:45:32

标签: vb.net visual-studio

我正遇到一个奇怪的问题。

我使用以下代码查找打开的文件夹并将其关闭

Dim sh = CreateObject("shell.application")
For Each item In sh.Windows
    If item.document.folder.self.Path = DBFolder Then
        item.Quit()
    End If
Next

这是奇怪的部分,除非打开Internet Explorer窗口,否则它按预期工作。在IE打开的情况下,我收到以下错误:

  

“System.MissingMemberException”类型的未处理异常   发生在Microsoft.VisualBasic.dll

     

其他信息:类型上的公共成员'文件夹'   找不到“HTMLDocumentClass”。

我个人不使用IE,但我的用户可能会这样做,如果我部署,这将导致问题。有没有人有解决方法或建议?

1 个答案:

答案 0 :(得分:0)

这是预期的行为,您将获取任何打开的资源管理器或Internet Explorer窗口。您可以通过在Microsoft HTML对象库中添加对mshtml的引用以及在Microsoft Internet Controls中添加SHDocVw来处理此问题。

Add Reference > COM > Type Libraries > Microsoft HTML Object Library

Add Reference > COM > Type Libraries > Microsoft Internet Controls

    Dim sh As New SHDocVw.ShellWindows

    For Each item In sh

        If Not TypeOf item.Document Is mshtml.HTMLDocument Then
            MessageBox.Show("it is not an IE window! " + item.Path())
        Else
            MessageBox.Show("it is an IE window!" + item.Path())
        End If


    Next item