如图。
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; }
文章评论