Windows Forms程序中嵌入并播放Wave音频文件

简介:

    前言

    本文介绍了将Wave音频文件嵌入程序并使用System.Media命名空间中的类进行播放的一种方法,受益于System.Media类库,本文中的示例无须引用”winmm.dll”来播放音频文件,所以这个方法实现起来只需要更少的代码。

    示例中使用的音频文件作为资源嵌入到了程序中,这样在安装程序时就不再需要将外部的Wave文件一起打包了,同时这种方法也排除了在安装程序后音频文件被移除或替换的潜在可能。

    开始

    示例程序是下面这样一个简单的窗体: 
    

    解决方案资源管理器的示意图则是这样的: 
    
    
    解决方案中只有一个项目:EmbeddingWavFiles。WavFiles文件夹中的两个wave文件是嵌入到资源文件的音频文件,它们不会随主程序一起打包,一旦嵌入资源文件,程序就可以不依赖它们了。

    将音频文件添加到资源文件的方法

    要将音频文件添加到解决方案,先在解决方案资源管理器中打开Resources.resx文件,这时你会看到一个下拉列表:
    
    
    这里选择Audio(音频)类型,然后点击它右边的”Add Resource”,这时会打开一个文件浏览器,在这里选择要添加的资源(此处只能选择wav类型的文件)。

    将音频文件添加到资源文件后,选择其中的每一项,按F4打开该项的属性窗口,将Persistence属性设置为” Embedded in .resx”:
    
    
    此时编译程序,会看到” Resources.resx”文件较之开始体积大了不少。

    至此,文件已经添加完毕,并得到了正确的设置,现在就可以在项目内使用它们了。

    播放Wave文件的代码:

    1、添加命名空间:System.Media; 

    2、添加播放文件的代码:
    播放文件一次:

     try
    {
        SoundPlayer player 
=   new
            SoundPlayer(EmbeddingWavFiles.Properties.Resources.sound);
        player.Play();
    }
    
catch  (Exception ex)
    {
        MessageBox.Show(ex.Message 
+   " "   +  ex.StackTrace,  " Error " );
    }

    这里使用添加的资源来建立一个SoundPlayer类的实例,然后调用它的Play方法播放文件一次。

    循环播放:
     try
    {
        SoundPlayer player 
=   new
            SoundPlayer(EmbeddingWavFiles.Properties.Resources.sound2);

        
if  (btnLoopPlay.Text  ==  ( " 播放 " ))
        {
            player.PlayLooping();
            btnLoopPlay.Text 
=   " 停止 " ;
        }
        
else
        {
            player.Stop();
            btnLoopPlay.Text 
=   " 播放 " ;
        }
    }
    
catch  (Exception ex)
    {
        MessageBox.Show(ex.Message 
+   " "   +  ex.StackTrace,  " Error " );
    }
   
    这里调用PlayLooping方法循环播放文件,可以调用Stop方法停止播放。

    示例中在建立SoundPlayer的实例时,构造函数的参数类型是System.IO.UnmanagedMemoryStream,除此之外,重载的构造函数还接受字符串,该字符串表示要加载的wave文件的位置。

    总结

    这个示例演示了如何将音频文件嵌入到应用程序的资源文件并播放它们,这要用到System.Media类库。类似的功能也可通过引用”winmm.dll”来实现,但本文的方法需要的代码更少,从部署的角度来说也更为安全。 

                                                                                                       By Anders 

    参考原文: http://www.c-sharpcorner.com/UploadFile/scottlysle/embedwavs01072007051701AM/embedwavs.aspx  
    

    示例下载:PlayWaveFiles.rar


本文转自一个程序员的自省博客园博客,原文链接:http://www.cnblogs.com/anderslly/archive/2007/01/23/embeddingwavfilesinwinform.html,如需转载请自行联系原作者。

目录
相关文章
|
6天前
|
安全 Ubuntu iOS开发
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
53 3
Nessus Professional 10.10 Auto Installer for Windows - Nessus 自动化安装程序
|
2月前
|
Ubuntu Linux Windows
如何在Ubuntu系统中安装Wine,借此来运行Windows程序
熟悉的登录画面出现,在Ubuntu系统中扫描登录微信程序。
|
2月前
|
Unix Linux 编译器
解决在Windows平台上运行Golang程序时出现的syscall.SIGUSR1未定义错误。
通过这种结构,你的代码既可以在支持 SIGUSR1 信号的系统上正常工作,又可以在不支持这些信号的 Windows 系统上编译通过,确保跨平台的兼容性和功能的完整性。
123 0
|
3月前
|
Windows
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
Windows下版本控制器(SVN)-验证是否安装成功+配置版本库+启动服务器端程序
129 2
|
4月前
|
Windows
Windows下版本控制器(SVN)-启动服务器端程序
Windows下版本控制器(SVN)-启动服务器端程序
136 4
|
6月前
|
安全 Windows
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
本文主要介绍了因清理电脑垃圾文件时误删虚拟内存导致的Windows页面文件配置问题,并提供了详细的解决步骤。问题表现为开机后出现临时页面文件创建的提示弹窗。解决方法包括通过控制面板或快捷键进入高级系统设置,进而调整虚拟内存设置:进入性能选项中的虚拟内存栏,选择自动管理所有驱动器的分页文件大小,最后确认并重启计算机以恢复正常运行。
4703 5
“由于启动计算机时出现了页面文件配置问题,Windows在你的计算机上创建了一个临时页面文件。。。”的问题解决
|
5月前
|
安全 Devops 测试技术
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
114 0
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
|
7月前
|
Windows
Windows程序的数字签名证书怎么申请
Windows程序的数字签名证书申请流程包括:准备企业资料(营业执照、税务登记证等),提交申请表及企业资料。经过初审、实名认证和二审后,等待1-5个工作日审核结果。审核通过后,CA机构颁发证书并通过邮件或邮寄方式发送。收到证书后按指南安装并使用签名工具对程序进行数字签名,确保软件完整性和可信度。注意证书有效期、管理和兼容性问题。
|
1月前
|
运维 安全 网络安全
Windows Server 2019拨号“找不到设备”?Error 1058解决指南
Windows Server 2019拨号报错1058?别急!这不是硬件故障,而是关键服务被禁用。通过“服务依存关系”排查,依次启动“安全套接字隧道协议”“远程接入连接管理”和“路由与远程访问”服务,仅需4步即可恢复PPPoE或VPN拨号功能,轻松解决网络中断问题。
134 1
|
1月前
|
存储 SQL 人工智能
Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)
Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)
725 3
Windows Server 2025 中文版、英文版下载 (2025 年 9 月更新)

热门文章

最新文章