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

[与此页面关联的功能(Windows 媒体播放器 SDK)是旧版功能。 它已被 MediaPlayer 取代。 MediaPlayer 已针对Windows 10和Windows 11进行了优化。 如果可能,Microsoft 强烈建议新代码使用 MediaPlayer 而不是 Windows 媒体播放器 SDK。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

你可能已使用 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 或更高版本对象模型中的大部分功能都是通过对象层次结构访问的。 如前面的示例所示,可以使用 mediaCollection 对象的 getAll 方法获取 Playlist 对象,该对象通过根 Player 对象进行访问。 然后,可以使用 Playlist 对象的 item 方法从 Playlist对象获取特定的 Media 对象。 可通过 mediaCollection 对象访问其他五种方法,这些方法返回 Playlist 对象;每个方法都允许你根据特定条件(如流派或专辑)检索对象。

Windows 媒体播放器 7 或更高版本 ActiveX 控件对象模型的分层结构提供了一种更合乎逻辑的方法来组织可供使用的属性、方法和事件。 Player 控件的所有功能都包含在 Controls 对象中,Player 网络连接的所有功能都包含在 Network 对象中,依此类推。 例如,若要使用版本 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 时,该值对应于状态 PlaylistLocating,这意味着Windows 媒体播放器正在尝试查找播放列表。 此外,Player6.openState 属性可以检索 7 个不同的值,而 Windows 媒体播放器 7 或更高版本的 Player.openState 属性可以检索 22 个不同的值。 在修改代码以使用不同的对象模型版本时,请务必参考 Windows 媒体播放器 SDK 的用于脚本的对象模型参考部分。

关于玩家对象模型

脚本的对象模型参考

对象模型迁移指南