使用 Windows 媒体播放器 7 或更高版本的对象模型

你可能已使用 Windows 媒体播放器 6.4 ActiveX控件对象模型执行的大部分任务都需要采用新的方法。 在许多情况下,Windows 媒体播放器 7 或更高版本的对象模型中,属性、方法和事件的名称已更改。 例如,若要在版本 6.4 对象模型中指定文件路径,请设置 Player6.FileName 属性:

WMP64.FileName = "https://www.microsoft.com/somefile.wmv";

使用 Windows 媒体播放器 7 或更高版本的对象模型时,必须设置 Player.URL 属性:

WMP9.URL = "https://www.microsoft.com/somefile.wmv";

或者,使用 10 个对象模型,可以从库中获取 Media 对象,然后设置 Player.currentMedia 属性:

// Get the first media object in the media collection.
var MyMediaItem = WMP9.mediaCollection.getAll().item(0)

// Make the MyMediaItem object the current media.
WMP9.currentMedia = MyMediaItem;

Windows 媒体播放器 7 或更高版本对象模型中的大部分功能都通过对象层次结构进行访问。 如前面的示例所示,可以使用通过根 Player 对象访问的 mediaCollection 对象的 getAll 方法获取播放列表对象。 然后,可以使用播放列表对象的方法从播放列表对象获取特定 Media 对象。 可通过返回播放列表对象的 mediaCollection 对象访问其他五种方法:每个方法都允许根据特定条件(如流派或专辑)检索对象。

Windows 媒体播放器 7 或更高版本的分层结构ActiveX控制对象模型提供了一种更逻辑的方法,用于组织可用于使用的属性、方法和事件。 播放器控件的所有功能都包含在 Controls 对象中,播放器网络连接的所有功能都包含在 网络 对象中,等等。 例如,若要使用版本 6.4 对象模型开始播放内容,请使用 Player6.Play 方法:

WMP64.Play();

使用 Windows 媒体播放器 7 或更高版本的对象模型时,必须使用 Controls 对象访问 Play 方法:

WMP9.controls.play();

但是,对象模型的深度可能会导致很长的脚本语句:

WMP9.currentPlaylist.appendItem(WMP9.mediaCollection.getByName("MySong").item(0));

使用单个命名对象,如上述语句可以更加简单且更易于阅读。 以下示例使用单独的对象变量将前面的代码语句替换为语法:

// Store the current playlist object.
var pl = WMP9.currentPlaylist;

// Get a playlist from the media collection that contains
// one media item named "MySong".
var temp = WMP9.mediaCollection.getByName("MySong");

// Get the individual media item from the temp playlist.
var song = temp.item(0);

// Append the media item to the current playlist.
pl.appendItem(song);

此编码样式需要更多脚本行,但更易于遵循,尤其是添加的注释。 还有另一个优点: currentPlaylist 对象很容易重复使用,因为它存储在变量 pl 中。

与版本 6.4 对象模型中的相应功能相比,Windows 媒体播放器 7 或更高版本对象模型中的许多属性、方法和事件集或检索不同的值,或返回不同类型或数字的值。 例如,当 Player6.openState 检索 2 时,该值对应于Visual Basic常量 nsLoadingNSC,这意味着 Player 正在加载具有 .nsc 文件扩展名的工作站文件。 但是,当Windows 媒体播放器 7 或更高版本的对象模型属性 Player.openState 检索 2 时,该值对应于 state PlaylistLocating,这意味着Windows 媒体播放器尝试查找播放列表。 此外,Player6.openState 属性可以检索七个不同的值,而 Windows 媒体播放器 7 或更高版本的 Player.openState 属性可以检索 22 个不同的值。 在修改代码以使用其他对象模型版本时,请务必引用Windows 媒体播放器 SDK 的脚本对象模型参考部分。

关于玩家对象模型

脚本的对象模型参考

对象模型迁移指南