使用Windows API获取Windows mp3文件属性或标记?

时间:2019-07-08 09:18:48

标签: .net windows file-properties

我想在“文件”->“属性”下的“详细信息”选项卡中获取Windows能够获取的属性列表。

我已经阅读了几篇关于此的旧文章,但不知道是否有现代的方法可以做到这一点。有没有新的方法可以做到这一点?请注意,我已经在要读取的mp3中添加了自定义标签,某些库(如TagCSharp)无法读取,但Windows可以读取。

我已经尝试使用WindowsAPICodePack,但我不知道如何读取所有标签,而不仅是默认标签。

我也阅读了这篇文章 How do I get details from File Properties? 但是我还没有找到在.net中实现的任何方法

enter image description here

1 个答案:

答案 0 :(得分:1)

有几种方法。

一个简单的方法就是使用Shell。

测试mp3文件(Windows 10,C#,VS 2015)=>

logger = Logger()
logger.log_info("This is a log message")

我得到了第一个属性(法语)=>

// Add Reference Shell32.DLL
string sFolder = "e:\\";
string sFile= "01. IMANY - Don't Be so Shy (Filatov & Karas Remix).mp3";
List<string> arrProperties = new List<string>();
Shell objShell = new Shell();
Folder objFolder;
objFolder = objShell.NameSpace(sFolder);
int nMaxProperties = 332;
for (int i = 0; i < nMaxProperties; i++)
{
    string sHeader = objFolder.GetDetailsOf(null, i);
    arrProperties.Add(sHeader);
}
FolderItem objFolderItem = objFolder.ParseName(sFile);
if (objFolderItem != null)
{
    for (int i = 0; i < arrProperties.Count; i++)
    {
        Console.WriteLine((i + ('\t' + (arrProperties[i] + (": " + objFolder.GetDetailsOf(objFolderItem, i))))));
    }
}