使用.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