C# winform使用系统API播放音乐(非调用控件)
2009-11-26 11:17
1071 查看
让winform使用系统API播放音乐,这样做的好处是程序不用调用其他播放器控件的DLL,可以直接把音乐集成到程序里,最后只生成一个exe文件。这种方式唯一的局限性在于所播放的音乐只能是wav格式的音频文件。 这里我总结了3种方式: 第一种(.net API): 引用命名空间:using System.Media; 然后声明对象 SoundPlayer sp = new SoundPlayer(); 这里有2个重载,一是wav文件的url,另一个是数据流 播放与停止方法:sp.Play(); , sp.Stop(); 第二种(windows API): 引用命名空间:System.Runtime.InteropServices; [Flags] private enum PlaySoundFlags : int { SND_SYNC = 0x0000, //同步 SND_ASYNC = 0x0001, //异步 SND_NODEFAULT = 0x0002, SND_MEMORY = 0x0004, SND_LOOP = 0x0008, SND_NOSTOP = 0x0010, SND_NOWAIT = 0x00002000, SND_ALIAS = 0x00010000, SND_ALIAS_ID = 0x00110000, SND_FILENAME = 0x00020000, SND_RESOURCE = 0x00040004 } [DllImport("winmm")] private static extern bool PlaySound(string szSound, IntPtr hMod, PlaySoundFlags flags); //播放音乐,参数为wav文件路径 public static void Play(string strFileName) { //调用PlaySound方法,播放音乐 PlaySound(strFileName, IntPtr.Zero,PlaySoundFlags.SND_ASYNC); } //停止播放 public static void Stop() { PlaySound(null, IntPtr.Zero,PlaySoundFlags.SND_ASYNC); } 这种方式只能播放本地磁盘上的wav文件,不能播放数据流 第三种(windows API): 引用命名空间:System.Runtime.InteropServices; [DllImport("winmm.dll", EntryPoint = "sndPlaySound")] private static extern bool sndPlaySound(ref Byte snd, int fuSound); private static System.Byte[] sound; private void play() { sound = new byte[数据流.Length]; 数据流.Read(sound, 0, sound.Length); sndPlaySound(ref sound[0], 0x05); //0x05表示异步 } 这种方式能播放数据流,但不能播放文件路径,不过当然可以先取得文件路径再转换成数据流进行播放。 试想如果程序能播放数据流的话,那就可以把音频文件集成到exe文件里了。 |
相关文章推荐
- 使用C#调用win32 mciSendCommand 播放音乐
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- c# winform使用API屏蔽系统热键和任务管理器
- c# winform使用API屏蔽系统热键和任务管理器
- C#/.NET使用MediaPlayer控件播放MP3等音乐文件
- 使用C#调用系统API实现内存注入的代码
- C# 调用系统winmm.dll 播放音乐wav mp3
- C#使用MediaPlayer控件播放MP3等音乐文件
- C#调用WindowsMediaPlayer控件实现音乐播放(一)
- C#调用Media Player 控件播放音乐的常用方法及属性
- 使用C#调用系统API实现内存注入
- C# winform 用户控件里调用 wcf 发生“ Could not find default endpoint。。。。。。”错误
- 在C#中调用API播放windows声音
- C# Winform时间控件使用
- C# 调用系统API 内核 简单样例
- C#(Winform)的SaveFileDialog(文件保存对话框)控件使用
- WinForm"不错的Vista风格水晶按钮"控件使用(附:源码demo) 之配餐系统的开发
- 在WebBrowser控件使用js调用C#方法
- 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用
- C# WinForm开发系列之如何使用panel控件制作左侧导航菜单