65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 MCI 的媒体播放器

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.23/5 (9投票s)

2011年2月15日

CPOL

2分钟阅读

viewsIcon

42265

downloadIcon

4132

一个使用 winmm.DLL (MCI) 的媒体播放器。包含电台、搜索播放列表、以及排序播放列表(可选)功能。

引言

这篇文章是关于 MCISENDSTRINGwinmm.dll 的。我使用它们来播放媒体文件,这是一个很好的关于播放媒体文件的示例。我知道你可以找到很多关于 MCI 的例子,但没有像这个这样的。这个示例项目有一个电台选择,你可以根据需要通过添加电台 URL 来编辑它。我会随着时间的推移改进它的界面并处理它的错误。

要查找歌曲,请使用 'CTRL+F'。你可以使用 'CTRL+S' 对你的播放列表进行排序,并使用 'S' 播放你的顺序,或使用 'SHIFT+S' 清理你的顺序。在 'Görsel Öğe' 选项卡中,你可以看到 MP3 标签、媒体文件长度(+/-)、你的播放列表的长度(分钟),以及通过选择背景和前景颜色来指定你的界面。在 'Seçenekler' 选项卡中,你可以选择你想要如何收听歌曲(随机、重复单首歌曲、重复播放列表、循环(在播放列表结束时))。并且在这个选项卡中,你可以保存你的列表,并且一键即可随时获取它(参见右侧的列表框)。当然,还有电台部分,我希望你探索它。:)

这个解决方案可以帮助你学习 MCISENDSTRING 命令,你应该查看 'Player.cs'。 此外,你可以在 'Registry' 区域中了解使用 C# 的 Regedit 条目,在 'Zaman' 区域中了解 MCI 时间命令,如 'status media length',在 'MP3 ID3v1' 区域中了解 MP3 的 ID3v1 信息,如 'Artist'、'Year',以及其他区域来检查 'Player.cs' 中的其他函数。

你可以在你的项目中自由使用我的任何代码部分。这将帮助你了解 MCI,因为几乎所有的代码部分都有解释。

使用代码

首先,我们需要 Player 类来播放媒体文件,因为它在函数中包含 MCI 命令。内容在顶部进行了说明。在 Mp3PLayer(主窗体)构造函数中,有一些相似之处,因为几乎所有的组件函数都在 Player.cs 中。主要的相似之处是 Player muzik=new Player();。这很重要。在 'DragDrop' 区域中,你可以了解拖放(桌面到 WinForms、目录到 WinForms、文件到 WinForms)。 另外,对于界面更改,如颜色更改,请查看 'Skins' 区域。

全局变量和导入 winmm.DLL

[DllImport("winmm.dll")] 
private static extern long mciSendString(string strKomut, 
        StringBuilder strDonenDeger, int mediaUzunluk, IntPtr hwndCallback);
//And I Used it in Functions
//It is a classic API using.

时间函数:'Player.cs' 中的 Open 函数用于使用 MCI 命令字符串打开要播放的媒体文件。

SarkiUzunlukMiliSaniye(int sira)

Open(lst.Items[sira].SubItems[1].Text);
komut = "status Sarki length";
mciSendString(komut, donendeger, donendeger.Capacity, IntPtr.Zero); //Media File LENGTH!
return Convert.ToInt32(donendeger.ToString());

按钮按下事件:trcsarkiyer2 是一个用于跟踪媒体状态的滚动条,SarkiUzunlukMilisaniye 是一个 'status media file' 函数。

Play(int sira)

Stop();
Open(lst.Items[sira].SubItems[1].Text); //Other Function Of MCI
trcsarkiyer2.Maximum = SarkiUzunlukMiliSaniye(sira); //ScrollBar For Position And Length
komut = "play Sarki";
mciSendString(komut, null, 0, IntPtr.Zero);
play = true;

历史

这是我的第一篇文章。这个应用程序可能包含错误。它仅用作学习工具。祝你编码愉快;)

© . All rights reserved.