C#获取音乐相关信息和相关问题解决

15 篇文章 0 订阅
本文讲述了作者在Winform应用中尝试使用系统自带的shell3.0版本库获取音乐信息失败,后发现版本过低导致错误。通过替换为1.2版本的shell32.dll并提供详细步骤,展示了如何正确引用和获取音乐信息的过程。
摘要由CSDN通过智能技术生成

在这里插入图片描述

如图。

winform中需要获取音乐的相关信息,使用系统的shell32.dll这个dll库,开始的时候作者直接引用了系统自带的这个库,结果报错 一直不能解决,“System.InvalidCastException:“无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Shell32.Shell”。” 后来查过资料发现,是因为

系统自带的shell32.dll这个库是1.0版本的 太落后了,自己又到网上下了个1.2版本的,提供在这里给大家下载。Interop.Shell32.rar

下面步骤如下:

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;


     }
  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖的诗人Z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值