iTunes COM. Как получить старое местоположение трека с помощью С#?

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

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

person pdd    schedule 29.01.2011    source источник


Ответы (1)


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

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

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

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

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

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

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

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

person xdumaine    schedule 23.02.2011