1

现在已经尝试了一段时间。我在网上看到的所有解决方案似乎都不起作用,特别是真正简单的方法。

WMPLib.WindowsMediaPlayer c = new WMPLib.WindowsMediaPlayer();
IWMPMedia i = (IWMPMedia)c.currentMedia;

c.currentMedia 始终为空。

似乎 new WMPLib.WindowsMediaPlayer(); 始终创建 Windows Media Player 的新实例。首先,我认为这是我以管理员身份运行 Visual Studio 的事实,但改变这一点并没有帮助。

似乎我必须以某种方式连接到 wmplayer.exe 的运行实例,但无法找到这样做的方法。

顺便提一句。我需要的是当前播放歌曲的完整文件 url(如果是流式传输,则为 fullurl,但这是我现在最不关心的问题。)

4

1 回答 1

1

你的问题在这里回答。

  1. 一个非常直接的方法:

    在这里获取一个 WMP9 插件,它将把你当前的歌曲名称放在 WMP 窗口的标题栏上,并使用 FindWindow P/Invoke 获取窗口并获取歌曲名称。它应该工作,虽然有点棘手。

    在这里查看更多详情。

    Windows Media Player 9 系列博客插件

  2. 更复杂的方法:

    由于您的应用程序和 WMP 将是不同的进程,因此您的方案需要某种进程间通信 (IPC)。.NET 为此提供了远程处理。

    以下是一些有用的信息:

    如何在 C# 中与 Windows Media Player 交互

    C# 中的 Windows Media Player 远程处理

来自SamAgain

于 2010-10-24T22:29:48.910 回答