標籤:類型 介面 res sys 屬性 express sha lib cas
添加命名空間:
using Shell32;
using System.Text.RegularExpressions;
添加引用:COM組件的Microsoft Shell Controls And Automation
string dirName = Path.GetDirectoryName(SongPath);
SongName = Path.GetFileName(SongPath);//獲得歌曲名稱
FileInfo fInfo = new FileInfo(SongPath);
ShellClass sh = new ShellClass();
Folder dir = sh.NameSpace(dirName);
FolderItem item = dir.ParseName(SongName);
SongTime = Regex.Match(dir.GetDetailsOf(item, -1), "\\d:\\d{2}:\\d{2}").Value;//擷取歌曲時間 然後出現了這個:
未處理的例外狀況: System.InvalidCastException: 無法將類型為“Shell32.ShellClass”的 COM 物件強制轉換為介面類型“Shell32.IShellDispatch6”。此操作失敗的原因是對 IID 為“{286E6F1B-7113-4355-9562-96B7E9D64C54}”的介面的 COM 組件調用 QueryInterface 因以下錯誤而失敗: 不支援此介面 (異常來自 HRESULT:0x80004002 (E_NOINTERFACE))。
這個是因為vs內建的Interop.Shell32.dll版本是1.0 太老了,於是在網上找到了1.2版本的,然後改成引用1.2版本。再將引用屬性裡面的 嵌入互操作類型 改為false 就行了
dll的:http://download.csdn.NET/detail/u013529927/8812075
C# 擷取mp3檔案的歌曲時間長度