我可以使用 VB 访问音乐库目录条目中的所有字段吗?

Can I access all fields in the Music Library directory entry using VB?

Win10音乐库中显示的条目包括文件名、参与艺术家、专辑名称、曲目编号和歌曲名称。我知道如何使用 directory.getfiles 方法在 Visual Basic 中获取文件名。有没有办法以编程方式获取其他字段?

这可以通过在项目引用的 COM 选项卡中添加对“Microsoft Shell 控件和自动化”的引用来完成。

添加引用后,您将能够实例化一个 Shell 对象

Dim info As List(Of String) = New List(Of String)
Dim shell As Shell32.Shell = New Shell32.Shell()

' Path to the MyMusic folder
Dim musicPath = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic)
Dim musicFolder As Shell32.Folder = shell.NameSpace(musicPath)

此时您将能够查询该文件夹中的每个项目并询问它们的扩展属性

For Each item As Shell32.FolderItem2 In musicFolder.Items()
    ' Title
    Console.WriteLine($"Title: {musicFolder.GetDetailsOf(item, 21)}")
    ' Author
    Console.WriteLine($"Author: {musicFolder.GetDetailsOf(item, 20)}")
    ' Album
    Console.WriteLine($"Album: {musicFolder.GetDetailsOf(item, 14)}")
    ' Artist
    Console.WriteLine($"Part.: {musicFolder.GetDetailsOf(item, 13)}")
    ' Track
    Console.WriteLine($"Track.: {musicFolder.GetDetailsOf(item, 26)}")
    ' Duration
    Console.WriteLine($"Length: {musicFolder.GetDetailsOf(item, 27)}")
    ' Bits
    Console.WriteLine($"Bits: {musicFolder.GetDetailsOf(item, 28)}")
    Console.WriteLine()
Next

关于调用 GetDetailsOf 时那些神奇数字的描述,您可以看一下这个问题:What options are available for Shell32.Folder.GetDetailsOf