编辑
2025-09-29
C#
00

目录

摘要
正文
声明
总结

摘要


mciSendString 播放MP3

MCI(Media Control Interface,媒体控制接口)函数中,有些只适用于一种接口方式,有些则两种接口都可以用。mciSendString只适用于命令串接口方式(命令串中不区分大小写)。

正文

声明

C#
[DllImport("winmm.dll")] private static extern uint mciSendString(string command,StringBuilder returnValue,int returnLength,IntPtr winHandle); ### **基本功能实现** 注意temp_alias 这个是对应别名 ```C# /// <summary> /// 播放 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPlay_Click(object sender, EventArgs e) { StringBuilder path = new StringBuilder(); path.Append(@"D:\MyProject\白泽\Bz.Platform\wavplay\a.mp3"); mciSendString(@"close temp_alias", null, 0, IntPtr.Zero); mciSendString(@"open """ + path + @""" alias temp_alias", null, 0, IntPtr.Zero); mciSendString("play temp_alias repeat", null, 0, IntPtr.Zero); } /// <summary> /// 停止 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnStop_Click(object sender, EventArgs e) { mciSendString("stop temp_alias", new StringBuilder(), 0, IntPtr.Zero); } /// <summary> /// 暂停 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnPause_Click(object sender, EventArgs e) { mciSendString("pause temp_alias", new StringBuilder(), 0, IntPtr.Zero); } /// <summary> /// 继续 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnResume_Click(object sender, EventArgs e) { mciSendString("resume temp_alias", new StringBuilder(), 0, IntPtr.Zero); } /// <summary> /// 取得音频长度 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnLength_Click(object sender, EventArgs e) { StringBuilder lengthBuf = new StringBuilder(32); mciSendString("status temp_alias length", lengthBuf, lengthBuf.Capacity, IntPtr.Zero); long len = long.Parse(lengthBuf.ToString()); MessageBox.Show((len / 1000.0f/60.0f).ToString()); } //调整声音1-1000 private void tbVoice_Scroll(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(32); sb.Append(tbVoice.Value.ToString()); mciSendString("setaudio temp_alias volume to "+ tbVoice.Value.ToString(), sb, sb.Capacity, IntPtr.Zero); } /// <summary> /// 取得当前位置 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnCurrent_Click(object sender, EventArgs e) { StringBuilder lengthBuf = new StringBuilder(32); mciSendString("status temp_alias position", lengthBuf, lengthBuf.Capacity, IntPtr.Zero); long len = long.Parse(lengthBuf.ToString()); MessageBox.Show((len / 1000.0f / 60.0f).ToString()); }

image.png

总结

在本文中,我们介绍了如何在 C# 中使用 mciSendString 函数播放声音。我们声明了 mciSendString 函数,并演示了一些常用的属性和方法,包括播放声音、暂停和继续播放、停止播放以及获取声音状态。

本文作者:技术老小子

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!