- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我的一个应用程序从众多音乐播放器中检索当前播放的歌曲。但是,我在实现 Zune 和 Windows Media Player 时遇到了很大的麻烦。
我在这个主题上做了很多谷歌搜索,不幸的是,它只会让我越来越困惑。
我通常会为我的其他应用程序做什么:
" - Spotify "
)import win32com.client
wmp = win32com.client.gencache.EnsureDispatch('WMPlayer.OCX')
# some function I don't have here, it retrieves the current playing song
# and other data
Is the fact that it is using the name "MsnMsgrUIManager"#000000"> causing the zune software to send it information about which song is playing? Is there a way to get this information without this kind of hack?
最佳答案
我有 C++ 中的工作代码来打印当前在 WMP 中播放的媒体的名称。这是一个简单的控制台应用程序(78 行代码)。
脚步:
1) 实现了一个基本的 COM 对象,实现了 IUnknown、IOleClientSite、IServiceProvider 和 IWMPRemoteMediaServices。使用 ATL 模板 CComObjectRootEx 这很简单(某种程度上,您的里程可能会有所不同)。唯一需要(简单)代码的方法是 IServiceProvider::QueryService 和 IWMPRemoteMediaServices::GetServiceType。所有其他方法可能返回 E_NOTIMPL
2) 实例化“WMPlayer.OCX”COM 对象(在我的例子中,通过 CoCreateInstance)
3) 通过 QueryInterface 从对象中检索一个 IOleObject 接口(interface)指针
4) 从 1) 中看到的类实例化一个对象(我使用 CComObject<>::CreateInstance 模板)
5) 使用您在 3) 处获得的接口(interface)中的 SetClientSite 方法,将指针传递给您的 OleClientSite 实现。
6) 在 SetClientSite 调用期间,WMP 会回调您:首先请求 IServiceProvider 接口(interface)指针,其次调用 QueryService 方法,请求 IWMPRemoteMediaServices 接口(interface)指针。返回您的 IWMPRemoteMediaServices 实现,第三,您将通过 GetServiceType 再次被调用。然后您必须返回“远程”。您现在已连接到 WMP 运行实例
7) 查询 COM 对象以获取 IWMPMedia 接口(interface)指针
8) 如果 7) 没有给出 NULL,则读取 IWMPMedia::name 属性。
9) 完毕
以上都是用VS2010/Windows 7测试的,运行WMP(如果没有运行媒体播放器进程,什么都不做)。
我不知道你是否可以/想要在 Python 中实现 COM 接口(interface)和对象。如果您对我的 C++ 代码感兴趣,请告诉我。您可以在 C++ DLL 中使用该代码,然后从 python 调用它。
关于python - 需要一种使用 Python 从 Zune 和 Windows Media Player 中检索当前播放歌曲的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19452001/
class Skeleton { public: void attack(Player player) { if (canAttackSkeleton()) {
我是使用 Java 播放音频的新手。我编写了代码来播放一些广播流。 我发现有一些流媒体网址,例如 http://fm939.wnyc.org/wnycfm .这没有端口号并包含斜杠。我只能使用 jav
我在我的 ReactPlayer 组件中使用 light={true} 设置在视频列表中显示缩略图。这在初始加载时工作正常。但是,当用户单击缩略图时,我会打开一个模式来播放视频(在单独的 ReactP
所以我目前正在为玩家重构游戏中的代码并启动一个玩家类: import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Input; import com.b
某些应用程序和 IDE 建议安装 Adobe Flash 播放器的调试版本。我知道即使没有通过测试电影运行 Flash,这也允许查看跟踪语句,但还有什么不同呢?有什么事吗? 此外,我如何判断我看到
我已经阅读过类似的问题,但没有一个对我的情况有帮助。 这是我的 YouTube iframe: 我动态添加了 src 属性。 这是我的播放器: var player; function onYou
研究了许多主题和不同的领域后,我感到不知所措。我知道答案可能很简单,但我只是没有看到它。言归正传,这就是我正在做的事情。 我有一个本地托管的网页,当前如果在 Internet Explorer 中加载
Jwplayer 在正确加载视频之前闪烁“加载播放器时出错:无法加载播放器配置”一秒钟。我只是觉得这看起来不专业,我花了很多时间寻找如何抑制错误或隐藏它,直到视频加载完成。 在 Chrome 或 Sa
在 Exoplayer 版本中 2.14.1 Playerd.EventListener()已弃用。当我阅读文档时,它说使用而不是 Player.Listener ,但我不知道如何使用该方法,如下面的
我正在尝试创建一个按钮,允许用户单击它并停止嵌入的 YouTube 视频。但是,每当我尝试调用播放器对象本身来使用函数player.playVideo()时,我都会收到一条错误消息,指出该函数未定义。
我正在通过制作一个简单的纸牌游戏来学习数据结构。在这段代码中,我有一个类 Player 和一个包含游戏中所有玩家的 Queue。 队列的实现: template class Queue{
MPMoviePlayerController 播放器在按下完成按钮后永久隐藏播放器控件。 我有一个带有 moviePlayer.controlStyle = MPMovieControlStyleE
Player::Player(string Playername, int nr ,Board* x) { imie= Playername; number=nr; int k
情况是这样的。我在我的 Django REST API 上得到了一个列表:/playerslist/ 它返回了一个玩家列表,就像这个一样: http://pastebin.com/JYA39gHT 这
我有一个 YoutubePlayer 在我的 Motion Layout 中播放视频。我想实现这个youtube-like motion https://developer.android.com/t
我一直在使用 MPC-HC 窗口的状态文本来确定视频是正在播放还是暂停。但是,在全屏模式下或隐藏状态栏时,状态文本不会更新。有人向 MPC-HC 团队指出了这个错误,但尚未解决:https://tra
我的 Blackjack 默认构造函数中有这一行。 m_players[0].SetPlayerName("Jane"); 这在我的 Player 类中使用了一个 setter 来将玩家的名字设置为
我最近一直在开发 Ruby on Rails 应用程序。我们使用 Yahoo Web Player 来播放我们的音频和视频文件。它工作得非常好,特别是对于不允许使用 Flash 的平板电脑和智能手机。
更新:这个问题的前提被证明是被误导的。除非移动是响应用户单击,否则不会发生此问题。请参阅here . 这几天我一直在为一个错误而苦苦挣扎,希望有人能提供帮助。 我有一个 jquery 脚本,它使用 j
用图片说明更容易。抱歉审查。 在这个屏幕中有一个 WebView 是白色的部分,包含一个带有 Flash 内容的网页。 Flash 内容应该在底部红色条下方(部分隐藏在后面),因为 webview 边
我是一名优秀的程序员,十分优秀!