您好,KF。 三个词: 实践、实践、实践。
您知道,有个古老的笑话是关于如何到达“卡内基音乐厅”的,这是一个与音乐相关的问题,“卡内基音乐厅”是他们演奏音乐的地方,而我们只是试图更灵活一些并且…好吧…。
好的,不用担心。 不用实践、实践、实践这三个词,那么,下面这三个字怎么样: 用脚本。
我们所说的脚本是指下面的这个脚本:
Set objPlayer = CreateObject("WMPlayer.OCX" )
Set objMediaCollection = objPlayer.MediaCollection
Set colSongList = objMediaCollection.getByAttribute("MediaType", "audio")
For i = 0 to colSongList.Count - 1
Set objSong = colSongList.Item(i)
Wscript.Echo objSong.Name & " -- " & objSong.getItemInfo("WM/AlbumArtist")
Next
该脚本开头创建了一个 WMPlayer.OCX 对象的实例,这就是使用 VBScript 实例化 Windows Media Player 的方式。 然后使用下面这行代码连接到“媒体库”:
Set objMediaCollection = objPlayer.MediaCollection
正如您可能知道的那样,“媒体库”中可包含各种类型的内容: JPEG 图片、视频文件、音频文件等。由于我们只关心音乐文件(如 .MP3 和 .WMA 文件),因此我们使用以下这行代码来返回一个“媒体库”子集,即只包含音频文件的子集:
Set colSongList = objMediaCollection.getByAttribute("MediaType", "audio")
正如您所看到的,我们所做的就是调用 getByAttribute 方法,传递两个参数:
| • |
“MediaType”,表示我们感兴趣的属性。 |
| • |
“audio”,表示我们感兴趣的属性的值。 |
换句话说,“返回“MediaType”等于“audio”的所有对象”。
getByAttribute 方法将返回一个媒体项数组,每项均表示一个音频文件。 要检索有关这些媒体项的信息,我们需要构建一个 For Next 循环,从 i 等于 0 开始循环,直到 i 等于媒体项个数 Count 减 1。(与 VBScript 中的大多数数组一样,数组中的第一项为项 0;因此最后一项将是项数减 1。例如,如果数组中有 100 项,则最后一项将是 99。)
每次执行该循环时,都将使用以下代码绑定到一个音频文件:
Set objSong = colSongList.Item(i)
然后我们回显每个音频文件的名称和艺术家。 您可能注意到了我们获得艺术家姓名的方式有些奇怪: 我们必须调用 getItemInfo 方法并指定 WM/AlbumArtist 属性。为什么会是这样? 就像您的父母过去常常告诉您: 因为。 这就是 Media Player 对象模型的工作方式。
当运行此脚本时,将返回类似下面内容的信息:
Losing My Religion -- R.E.M.
Garden Party -- Rick Nelson
Teacher Teacher -- Rockpile
Let's Spend the Night Together -- The Rolling Stones
Anybody Seen My Baby? -- The Rolling Stones
It's Only Rock 'N Roll (But I Like It) -- The Rolling Stones
很酷吧?
我们意识到此脚本与本专栏中介绍的大多数脚本相比稍有不同,而且我们还意识到有时所做的说明可能有些简单。 如果您对使用脚本管理 Windows Media 播放列表和音频文件确实很感兴趣,请查看 Dr. Scripto’s Fun Zone(英文)中的这篇文章。
切记: 实践、实践、实践。