Skip to main content
 首页 » 编程设计

c#之如何从 mpc-hc 实例中获取重要的媒体信息

2025年05月04日200qlqwjy

我正在尝试使用 C# 应用从我的个人最爱 Media Player Classic 中获取媒体信息。

假设我得到了我感兴趣的 MPC-HC 实例的窗口句柄,但 WM_GETTEXT 只得到了窗口标题。我不满足于此。我还想获取播放状态(停止/暂停/播放)、当前时间、总长度和文件路径。我应该能够从文件中获取所有其他内容,知道它的路径。

我想到的第一件事是使用 AutoIt Window Info 应用程序,它可以在其 Visible Text 选项卡中获得我想要的东西,我可以使用它作为获取文本的工具,但我如何将 那个 文本直接发送到我的 C# 应用程序进行解析?

我想找到一种不涉及干扰用户事件的解决方案,例如强行将播放器的窗口置于前面。我只想在我的 C# 应用程序中获取当前时间、播放状态和完整文件路径。有没有简单的方法可以做到这一点?

请您参考如下方法:

我发现通过启用 MPC-HC 网络界面,一个漂亮的页面会出现,其中包含我需要的所有当前播放器的统计信息,地址为:http://localhost:13579/variables.html( 13579 是默认端口,但您可以在选项中更改它)。选中仅允许从本地主机访问以保护您的 secret 音乐欲望;)

该页面上的 HTML 有点像这样:

<html> 
<head> 
    <title>MPC-HC WebServer - Variables</title> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
    <link rel="stylesheet" type="text/css" href="default.css"> 
</head> 
<body> 
    <p id="filepatharg">C:\music.mp3</p> 
    <p id="filepath">C:\music.mp3</p> 
    <p id="filedirarg">C:\</p> 
    <p id="filedir">C:\</p> 
    <p id="state">1</p> 
    <p id="statestring">Paused</p> 
    <p id="position">85918</p> 
    <p id="positionstring">00:01:25</p> 
    <p id="duration">284525</p> 
    <p id="durationstring">00:04:44</p> 
    <p id="volumelevel">50</p> 
    <p id="muted">0</p> 
    <p id="playbackrate">1</p> 
    <p id="reloadtime">0</p> 
</body>