無法將型別為“Shell32.ShellClass”的 COM 物件強制轉換為介面型別“Shell32.IShellDispatch 6”
阿新 • • 發佈:2019-01-05
今天想研究一下mp3 然後在輸出mp3長度的時候用瞭如下程式碼(網上搬得):
string file = "D:\\AccountDaemon\\My Music\\MyMusics\\Luxtos.mp3"; ShellClass sh = new ShellClass(); Folder dir = sh.NameSpace(Path.GetDirectoryName(file)); FolderItem item = dir.ParseName(Path.GetFileName(file)); string str = dir.GetDetailsOf(item, 27); // 獲取歌曲時長。 Console.WriteLine(str);
然後出現了這個:
未經處理的異常: 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