iTunes COM. Как получить старое местоположение трека с помощью C #? - PullRequest
4 голосов
/ 29 января 2011

iTunes имеет старое местоположение (путь к файлу, который больше не существует) трека с! перед ними. Я знаю это, потому что если вы нажмете правой кнопкой мыши на трек с! перед ним и выберите GetInfo (затем выберите нет, не размещайте его). На вкладке «Сводка» есть раздел, в котором показан путь к песне (не работает). Когда я пытаюсь получить местоположение трека с помощью iTumes COM, IITFileOrCDTrack.location возвращает пустую строку. Итак, как мне получить это значение "где" из Getinfo -> вкладка Summary?

Ниже показано, как я сейчас пытаюсь получить местоположение трека (используя 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 Ответ

1 голос
/ 23 февраля 2011

Когда файл найден, значение «где» показывает C:\..., но когда файл не найден, он показывает file:\\C:\... в iTunes, и из кода вы можете получить доступ к местоположению, используя свойство Location (возможно, с вашим кодом - заглавная буква 'L' в 'Location')

Из документации SDK:

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

Возвращает полныйпуть к файлу, представленному этой дорожкой.

Параметры: location Возвращает полный путь к файлу, представленному этой дорожкой.

Возвращаемые значения:

S_OK Операция прошла успешно.
S_FALSE Не удалось найти местоположение (например, в ожидаемом месте нет файла).
E_POINTER местоположение NULL.
ITUNES_E_OBJECTDELETED Этот трек был удален.
E_FAIL Произошла непредвиденная ошибка.

Мне удалось воспроизвести это (то есть см.значение «где» в itunes, когда файл не может быть найден и возвращается значение null, возвращаемое из IITFileOrCDTrack.Location. Я не думаю, что это Если оно не задокументировано, вернуть значение невозможнофактический файл не может быть найден.

...