使用.NET Windows Media Player库,我已经能够以编程方式获取和更改Windows Media Player的各种文件属性(如用户评分)。我希望通过调用Player.openPlayer(url)
来使用相同的库来控制(播放,停止,下一次等)Windows Media Player实例。理论上来说,这应该是非常有可能通过Player.controls对象,但是当我去访问它们时,没有任何控件可用。除了控件对象之外,几乎所有的播放器属性/方法/事件都可用于我。下面是一些示例代码来说明我已经试过:通过IronPython控制Windows Media 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
编辑:快速修复被持有了,但我仍然没有找到一个实际的解决办法呢。
问题根本不清楚吗? – covertCoder 2012-04-13 13:44:16
不,但这需要一个非常罕见的知识交集 - 您可能是第一个使用IronPython来控制WMP的人。 :)如果忽略'isAvailable'并只调用'play()'会发生什么? – 2012-04-16 22:39:25
没有任何反应,与所有其他控制功能相同。其他函数不会返回错误,但它们也不会执行其预期的功能。我目前的quickfix每次打开一个新的播放列表/媒体文件时都会调用Player.openPlayer,但这通常会让WMP实例闪烁,或者最糟糕的情况下,我会从其他任何我正在做的事情中集中注意力。 – covertCoder 2012-04-17 13:11:10