
如图。
winform中需要获取音乐的相关信息,使用系统的shell32.dll这个dll库,开始的时候作者直接引用了系统自带的这个库,结果报错 一直不能解决,“System.InvalidCastException:“无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Shell32.Shell”。” 后来查过资料发现,是因为
系统自带的shell32.dll这个库是1.0版本的 太落后了,自己又到网上下了个1.2版本的,提供在这里给大家下载。
下面步骤如下:
1.引用下载好的shell32.dll。
2.代码如下:
public void GetMusicInfo(string path)
{
// string[] Info = new string[7];
Shell32.Shell sh = new Shell();
Folder dir = sh.NameSpace(System.IO.Path.GetDirectoryName(path));
FolderItem item = dir.ParseName(System.IO.Path.GetFileName(path));
//Info[0] = "歌曲名:" + dir.GetDetailsOf(item, 21); // MP3 歌曲名
//Info[1] = "艺术家:" + dir.GetDetailsOf(item, 20); //Authors
//Info[2] = "专 辑:" + dir.GetDetailsOf(item, 14); // MP3 专辑
//Info[3] = dir.GetDetailsOf(item, 27); // 获取歌曲时长
//Info[3] = "时 长:" + Info[3].Substring(Info[3].IndexOf(":") + 1);
//Info[4] = "类 型:" + dir.GetDetailsOf(item, 9);
//Info[5] = "比特率:" + dir.GetDetailsOf(item, 22);
//Info[6] = "备 注:" + dir.GetDetailsOf(item, 24);
textEdit_Name.Text = dir.GetDetailsOf(item, 21);
textEdit_Singer.Text = dir.GetDetailsOf(item, 20);
textEdit_TimeLong.Text = dir.GetDetailsOf(item, 27);
FileInfo fileInfo = new FileInfo(path);
textEdit_Size.Text = fileInfo.Length.ToString();
textEdit_Format.Text = fileInfo.Extension;
}
文章评论