C#实现通过winmm.dll控制声音播放的方法

本文以实例介绍了C#如何通过winmm.dll来播放声音,主要实现步骤如下:


1.首先导入如下两个函数:

/// <summary>
/// 向媒体控制接口发送控制命令
/// </summary>
/// <param name="lpszCommand">命令,参见
/// http://msdn.microsoft.com/en-us/library/windows/desktop/dd743572(v=vs.85).aspx </param>
/// <param name="lpszReturnString">命令返回的信息,如果没有需要返回的信息可以为null</param>
/// <param name="cchReturn">指定返回信息的字符串大小</param>
/// <param name="hwndCallback">回调句柄,如果命令参数中没有指定notify标识,可以为new IntPtr(0)</param>
/// <returns>返回命令执行状态的错误代码</returns>
[DllImport("winmm.dll")]
static extern Int32 mciSendString(string lpszCommand, StringBuilder returnString, int bufferSize, IntPtr hwndCallback);
/// <summary>
/// 返回对执行状态错误代码的描述
/// </summary>
/// <param name="errorCode">mciSendCommand或者mciSendString返回的错误代码</param>
/// <param name="errorText">对错误代码的描述字符串</param>
/// <param name="errorTextSize">指定字符串的大小</param>
/// <returns>如果ERROR Code未知,返回false</returns>
[DllImport("winmm.dll")]
static extern bool mciGetErrorString(Int32 errorCode, StringBuilder errorText, Int32 errorTextSize);


2.示例代码如下:

int error = mciSendString("open C:\\Users\\Angel\\Desktop\\123.wav alias myDivece", null, 0, new IntPtr(0));
if (error == 0)
{
  mciSendString("play myDivece", null, 0, new IntPtr(0)); //播放
}
else
{
  StringBuilder errorText = new StringBuilder();
  mciGetErrorString(error, errorText, 50);
  MessageBox.Show(errorText.ToString());
}


3.可以通过以下语句进行播放控制:

mciSendString("play myDivece", null, 0, new IntPtr(0)); //播放
mciSendString("pause myDivece", null, 0, new IntPtr(0)); //暂停
mciSendString("stop myDivece", null, 0, new IntPtr(0)); //停止
mciSendString("close myDivece", null, 0, new IntPtr(0)); //关闭

感兴趣的读者可以动手测试一下本文实例,相信会对大家的C#程序设计起到一定的借鉴与帮助作用。

除声明外,跑步客文章均为原创,转载请以链接形式标明本文地址
  C#实现通过winmm.dll控制声音播放的方法

本文地址:  http://www.paobuke.com/develop/c-develop/pbk23658.html

相关内容

C#单位转换器简单案例

C#把UNICODE编码转换为GB编码的实例

windows中使用C# 调用 C语言生成的dll

C#自定义控件添加右键菜单的方法


C#语法相比其它语言比较独特的地方(二)

C#使用round函数四舍五入的方法

C#中TreeView节点的自定义绘制方法

C#函数式编程中的递归调用之尾递归详解

时间: 2024-10-11 07:41:48

C#实现通过winmm.dll控制声音播放的方法的相关文章

an 跳转各个fla发布的html,并控制声音播放与停止

按钮 a ,跳转到同html下的另一个html, 按钮b,停止声音 按钮c,播放声音 这里的播放声音,主要靠sound_mc影片.里面有两针,声音必须放在第二帧上面,同时第二针上面加this.stop(),那么当播放 的时候sound_mc设置为play就行. 代码如下: var that=this; this.a.addEventListener("click", function () { window.open("test.html", '_self'); }

c# 使用windows自带winmm.dll 播放音频

今天帮同事完成一个C#应用程式,用户需要在点击完成后发出指定声音.我们使用windows 自带的winmm.dll,这样就不用到处找库了,利有系统播放音频功能完成开发. 下面是完整的核心代码: 1 using System.Runtime.InteropServices; //DllImport的命名空间 2 [DllImport("winmm.dll")]privatestaticexternlong mciSendString(string lpstrCommand,StringB

C# 调用系统winmm.dll 播放音乐wav mp3

using System.Runtime.InteropServices;//放wav public partial class frmMain : Form { 系统放 播放音乐 wav mp3 [DllImport("winmm.dll")] public static extern bool PlaySound(string pszSound, int hmod, int fdwSound);//播放windows音乐,重载 public frmMain() { Initiali

winmm.dll包含函数

DLL 文件: winmm 或者 winmm.dll DLL 名称: Windows Multimedia API 描述: winmm.dll是Windows多媒体相关应用程序接口,用于低档的音频和游戏手柄. 函数汇总: auxGetDevCaps 查询指定的辅助输出设备以确定其性能 auxGetNumDevs 检取系统中存在的辅助输出设备的数量 auxGetVolume 返回指定的辅助输出设备的当前卷设备 auxOutMessage 向指定的辅助输出设备发送一条消息 auxSetVolume

unity3d的playmaker插件使用教程,三、对象出入触发,声音播放

对象出入触发是游戏常见的情形.包含同一时候声音播放 首先建立进去区域.新建一个立方体,去掉mesh render. 而且选中 is trigger同意进入 样例里用了unity3d的第一人视角控制,可是,在unity5.3.4和playmaker1.7.8下.控制没反应.应该是个bug. 所以,我用了一个球体,自己写了键盘控制移动的脚本 在立方体上,加入状态机.加入Listerner.OnEnter.OnExit状态.加入Enter.Exit事件,并连接 在Listerner状态下加入两个Tri

Java应用程序中的声音播放

声音可以创造意境,触发遐想,当与虚拟图像相结合时,更加可以让整个世界充满幻觉,声音是多媒体技术的基础. 播放声音是Java对多媒体的支持一个重要部分,它支持的声音文件类型主要有: AU - (扩展名为AU或SND)适用于短的声音文件. WAV - (扩展名为WAV)由 Microsoft和 IBM共同开发,几乎能被所有支持声音的Windows应用程序播放. AIFF - (扩展名为AIF或IEF)音频互换文件格式是为Macintosh计算机和Silicon Graphics (SGI)计算机所共

创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放。一个滑动条用来控制视频播放位置,以10为步长跳进。另一个滑动条用来控制停止/播放

/* 创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放. 一个滑动条用来控制视频播放位置,以10为步长跳进.另一个滑动条用来控制 停止/播放 */ #include <cv.h> #include <highgui.h> int g_slider_position = 0; CvCapture* g_capture = NULL; int index = 0; bool flag = true; int g_slider_position1 = 0; void o

使用 audio 和 embed 实现浏览器兼容的网页声音播放

使用 audio 和 embed 实现浏览器兼容的网页声音播放 学习参考源码如下: function playSound() { var borswer = window.navigator.userAgent.toLowerCase(); if ( borswer.indexOf( "ie" ) >= 0 ) { //IE内核浏览器 var strEmbed = '<embed name="embedPlay" src="http://www

Windows高速定时器,多媒体定时器winmm.dll库的使用

项目里面用到的这些看起来名字高大上的定时器测试下来也是非常不准.看了源码发现也是用System.Timers.Timer或者用的是Thread休眠的方式来实现的.100毫秒就不准了.直到一番搜索,发现利用多媒体定时器winmm.dll的MillisecondTimer是可用的.原文来自博客(dehai)Timer计时不准确的问题及解决方法”.代码如下: public sealed class MillisecondTimer : IComponent, IDisposable { //*****