Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Com 从iTunes Track对象的高/低持久ID检索该对象_Com_Itunes_Autohotkey_Itunes Sdk - Fatal编程技术网

Com 从iTunes Track对象的高/低持久ID检索该对象

Com 从iTunes Track对象的高/低持久ID检索该对象,com,itunes,autohotkey,itunes-sdk,Com,Itunes,Autohotkey,Itunes Sdk,我正在尝试使用AutoHotkey v1.1和iTunes Windows 11从其持久ID检索轨迹对象。在我尝试使用ItemByPersistentID方法之前,脚本运行良好 我用正确的方式调用ItemByPersistenti吗?谢谢。除非其他人提供关于ItemByPersistentID函数的答案,否则我发现了另一种方法。更麻烦的是,您必须保存一个曲目的4个ID,以便能够通过ID检索它,但它可以工作 objITunesunesApp := ComObjCreate("iTunes.Appl

我正在尝试使用AutoHotkey v1.1和iTunes Windows 11从其持久ID检索轨迹对象。在我尝试使用ItemByPersistentID方法之前,脚本运行良好


我用正确的方式调用ItemByPersistenti吗?谢谢。

除非其他人提供关于ItemByPersistentID函数的答案,否则我发现了另一种方法。更麻烦的是,您必须保存一个曲目的4个ID,以便能够通过ID检索它,但它可以工作

objITunesunesApp := ComObjCreate("iTunes.Application") ; will launch iTunes if not running
objITunesLibrary := objITunesunesApp.Sources.Item(1) ; main library
objITunesPlaylist := objITunesLibrary.Playlists.Item(1) ; main playlist
objITunesTrack := objITunesPlaylist.Tracks.Item(1) ; first track

; get IDs for this track
sourceID := objITunesTrack.sourceID
playlistID := objITunesTrack.playlistID
databaseID := objITunesTrack.trackDatabaseID
trackID := objITunesTrack.trackID
; check track name to see if we can retrieve the same track by IDs
name := objITunesTrack.name

MsgBox, % ""
    . "sourceID: " . sourceID . "`n"
    . "playlistID: " . playlistID . "`n"
    . "databaseID: " . databaseID . "`n"
    . "trackID: " . trackID . "`n"
    . "name: " . name . "`n"

; retrieve the same track using IDs
objTrackByID := objITunesunesApp.GetITObjectByID(sourceID, playlistID, trackID, databaseID)

MsgBox, % "objTrackByID.name: " . objTrackByID.name ; same name as previously -> WORKS!

对于同一播放列表中的所有曲目,sourceID和播放列表不会更改。因此,我们只需要为每首曲目保存2个ID就可以检索一首曲目。最后,只要可行,就不会比通过ItemByPersistentID检索复杂得多。

只是在原始脚本中发现了错误:

objTrackByID := objITunesPlaylist.Tracks.ItemByPersistentID(intIDHigh, intIDLow)

ItemByPersistentID是一种跟踪集合的方法。

只需考虑这些ID不是持久的。如对象模型文档中所述:IITObject使用四个单独的ID唯一标识iTunes中的源、播放列表或曲目。这些是运行时ID,它们仅在当前iTunes实例运行时有效。
objTrackByID := objITunesPlaylist.Tracks.ItemByPersistentID(intIDHigh, intIDLow)