我可以使用 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
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