2011-01-29 79 views
4

iTunes有跟蹤的舊位置(不再存在的文件路徑)!在他們面前。我知道這一點,因爲如果你右鍵點擊跟蹤!在它前面並選擇GetInfo(然後選擇否,不要找到它)。在摘要選項卡下,它有一個顯示歌曲路徑的部分(不工作)。當我嘗試使用iTumes COM獲取軌道位置時,IITFileOrCDTrack.location返回空字符串。那麼,我如何從Getinfo - > Summary選項卡中獲取這個「where」值?iTunes COM。如何使用c#獲取跟蹤的舊位置?

以下是我目前如何嘗試獲取跟蹤位置(使用C#)。我的整個iTunes庫有10首歌曲,它們都指向錯誤的文件位置,所以選擇哪首歌並不重要。

iTunesApp itunes = new iTunesApp(); 
IITLibraryPlaylist mainLibrary = itunes.LibraryPlaylist; 
IITTrackCollection tracks = mainLibrary.Tracks; 
IITFileOrCDTrack currTrack; 
currTrack = tracks[5] as IITFileOrCDTrack; 
Console.WriteLine(currTrack.location) //output is blank. 

回答

1

當文件被發現,「何處」值顯示C:\...當未找到該文件,它顯示file:\\C:\... iTunes內,並從代碼,你可以通過使用位置屬性訪問的位置(一個錯誤也許,你的代碼 - 利用在 '位置')

從SDK文檔中的 'L':

HRESULT Location ([out, retval] BSTR *location)

返回該軌道表示的文件的完整路徑。

參數: 位置返回該曲目表示的文件的完整路徑。

返回值:

S_OK手術很成功。
S_FALSE無法檢索該位置(例如,在預期位置不存在文件)。
E_POINTER位置是NULL
ITUNES_E_OBJECTDELETED此曲目已被刪除。
E_FAIL發生意外錯誤。

我能重現此(即看到「其中」在iTunes值,當文件不能被發現,並得到空從IITFileOrCDTrack.Location返回。我不認爲這是除非沒有記錄,如果找不到實際文件,則不可能返回該值。