通过IronPython控制Windows Media Player实例的问题

时间:2012-04-12 19:34:47

标签: .net ironpython windows-media-player wmp wmplib

使用.NET Windows Media Player库,我能够以编程方式获取和更改Windows Media Player的各种文件属性(如用户评级)。我希望使用相同的库通过Player.openPlayer(url)调用来控制(播放,停止,接下来等)Windows Media Player实例。从理论上讲,这应该是通过Player.controls对象实现的,但是当我去访问它们时,没有一个控件可用。实际上除了控件对象之外,我可以使用所有Player属性/方法/事件。以下是一些示例代码,用于说明我尝试过的内容:

import clr
clr.AddReferenceToFile( "Interop.WMPLib.dll" )
from Interop.WMPLib import WindowsMediaPlayerClass
wmp = WindowsMediaPlayerClass()
wmp.openPlayer(r"C:\Users\Public\Music\Sample Music\Kalimba.mp3")

这很好,但是当我执行以下操作时:

print wmp.controls.isAvailable("play").ToString()
print wmp.controls.isAvailable("pause").ToString()
print wmp.controls.isAvailable("stop").ToString()
...

我对每个控件都是假的。为什么我的(简单)应用程序无法使用这些控件?我可能会以错误的方式解决这个问题吗?我使用的是WMP 12,所以它应该不仅仅兼容了。我真的不想使用其他API,但我愿意在此时尝试任何方法。

以下是供参考的文档:http://msdn.microsoft.com/en-us/library/dd564034%28v=vs.85%29.aspx

编辑:快速解决方案现在暂停,但我还没有找到实际的解决方案。

1 个答案:

答案 0 :(得分:0)

print wmp.controls.get_isAvailable("play");
print wmp.controls.get_isAvailable("stop");
etc.

但请记住,在将文件加载到所述WMP控件之前,这些控件将不可用。

首先将wmp.URL设置为您要播放的文件的路径,然后,在加载完成后,只需调用wmp.controls.play();即可。您可以收听OpenStateChange事件,以确定它是否已加载。