获取当前的Windows媒体播放器实例

时间:2014-03-16 15:03:23

标签: python python-3.x com win32com wmp

大家好我想尝试将当前的媒体名称/艺术家整合到我的python应用程序中,但我似乎无法让它发挥作用。

我对iTunes做了同样的事情几乎没有任何问题,但由于某些原因我无法设法获得正确的Windows媒体播放器实例

wmp = win32com.client.gencache.EnsureDispatch("WMPlayer.OCX")

让我获得一个有效的wmp实例,但是当我尝试使用

获取当前媒体时
wmp.currentMedia

它什么也没有返回,并获得如下的音量:

wmp.settings.volume

返回的音量与我实际打开的Windows媒体播放器音量不同。

有什么我不知道的吗?我也尝试过使用WMPlayer.OCX.7,但是如果有人能帮助我的话,那就不会有用了。

2 个答案:

答案 0 :(得分:1)

Windows Media Player支持多个可运行的实例。以您正在进行的方式创建OCX会创建播放器的单独实例,当然,它没有加载任何媒体。

查找“主”实例的常用方法是查看运行对象表,但Windows Media Player不会这样做。相反,您需要使用"remote" mode

这并没有很好的记录,但有一个VB.Net sample here,从C# sample here翻译而来。 Windows SDK中的{+ 1}}目录中有C ++示例。

不幸的是,这些都不在Python中。但希望现有的样品可以帮助你。

答案 1 :(得分:0)

也许尝试使用类似GetObject(None, "WMPlayer.OCX")) EnsureDispatch的内容?我认为EnsureDispatch通常会生成一个单独的.exe实例。使用GetObject应“锁定”当前实例并使其可用作对象。