無法將類型爲“Shell32.ShellClass”的 COM 對象強制轉換爲接口類型“Shell32.IShellDispatch 6”

今天想研究一下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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章