4

iTunes には、トラックの古い場所 (存在しないファイル パス) があります。彼らの前では。! でトラックを右クリックすると、これを知っています。その前にある [GetInfo] を選択します (次に [いいえ] を選択し、見つけないでください)。[概要] タブの下に、曲のパス (機能していない) を示すセクションがあります。iTumes COM を使用してトラックの場所を取得しようとすると、IITFileOrCDTrack.location は空の文字列を返します。では、Getinfo --> [Summary] タブからこの "where" 値を取得するにはどうすればよいでしょうか?

以下は、現在トラックの場所を取得しようとしている方法です (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.
4

1 に答える 1

1

ファイルが見つかった場合は「where」の値が表示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 で "where" の値を確認し、IITFileOrCDTrack.Location から null が返されます。 文書化されていない限り、それは不可能だと思います実際のファイルが見つからない場合は値を返します。

于 2011-02-23T14:50:50.190 に答える