已更新的等效代码,用于在VB.NET中使用FolderItem.GetDetailsOf的Shell

问题描述 投票:0回答:2

我希望有人能够为此指出正确的方向。我花了数小时试图使我的代码正常工作。

我使用VB.NET在Visual Studio中编写了一个程序,该程序将打开目录,遍历所有文件,并将每个文件重命名/将其复制到新文件夹中。我现在正在尝试让程序读取每个文件的特定属性,并将其包含在文件名中。这将是“创建的媒体”或“创建的日期”属性。看来我可以使用Folder.GetDetailsOf方法来做到这一点。

Microsoft为VB提供的示例代码如下所示:

Private Sub btnGetDetailsOf_Click()
    Dim objShell  As Shell
    Dim objFolder As Folder

    Set objShell = New Shell
    Set objFolder = objShell.NameSpace("C:\WINDOWS")

    If (Not objFolder Is Nothing) Then
        Dim objFolderItem As FolderItem
        Set objFolderItem = objFolder.ParseName("clock.avi")

        If (Not objFolderItem Is Nothing) Then
            Dim szItem As String
            szItem = objFolder.GetDetailsOf(objFolderItem, 2)
        End If

        Set objFolderItem = Nothing
    End If

    Set objFolder = Nothing
    Set objShell = Nothing
End Sub

但是,当尝试编译时,出现很多错误,包括未定义Shell,Folder和FolderItem。

经过大量搜索和阅读文章后,我的代码已经到了这一点,但是在尝试设置objFolderItem时抛出了错误。

Dim di As New DirectoryInfo(c:\folder)
Dim fileArray As FileInfo() = di.GetFiles()
Dim file As FileInfo

Dim objShell As Object
Dim objFolder As Object
Dim objFolderItem As Object

objShell = CreateObject("Shell.Application")
objFolder = objShell.NameSpace(c:\folder) 'create folder object

For Each file In fileArray
    objFolderItem = objFolder.ParseName(file.Name) 'create file object
    MsgBox(objFolder.getdetailsof(objFolderItem, 201))
Next file

当我检查正在运行的代码时,它似乎objShell.NameSpace不返回任何内容。

有人可以建议我如何在VB.NET中创建objShell校正或提供Microsoft示例代码的更新版本,以便我可以以此为基础吗?

谢谢

我希望有人能够为此指出正确的方向。我花了几个小时试图使我的代码正常工作。我使用VB.NET在Visual Studio中编写了一个程序,该程序会...

vb.net
2个回答
0
投票

这是一个简单问题的大量代码。您不需要使用外壳。复制/移动:


0
投票

感谢您的帮助。我设法通过导入Microsoft Shell控件和自动化并使用以下代码来使此工作正常进行:

© www.soinside.com 2019 - 2024. All rights reserved.