麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#調用mciSendString播放音頻文件

2019-11-14 14:14:17
字體:
來源:轉載
供稿:網友

mciSendString函數是一個WinAPI,主要用來向MCI(Media Control Interface)設備發送字符串命令。

一、函數的聲明如下:

        PRivate static extern long mciSendString(            string command,      //MCI命令字符串            string returnString, //存放反饋信息的緩沖區            int returnSize,      //緩沖區的長度            IntPtr hwndCallback  //回調窗口的句柄,一般為NULL            );  

 

二、完整的代碼如下,其中的細節都有注釋說明。

需要注意兩點:

1、文件路徑要用""包含起來;

2、線程需要指定為STA。

using System;using System.Runtime.InteropServices;using System.Threading;namespace Zhy.MCI{    /*     * 調用API函數mciSendString播放音頻文件     * 主要包括按指定次數播放以及循環播放     * 作者:Zhy     * 時間:2015-7-21     */    public class MCI    {        [DllImport("winmm.dll")]        private static extern long mciSendString(            string command,      //MCI命令字符串            string returnString, //存放反饋信息的緩沖區            int returnSize,      //緩沖區的長度            IntPtr hwndCallback  //回調窗口的句柄,一般為NULL            );                   //若成功則返回0,否則返回錯誤碼。        /// <summary>        /// 按指定次數播放        /// </summary>        /// <param name="file"></param>        private void PlayWait(string file)        {            /*             * open device_name type device_type alias device_alias  打開設備             * device_name     要使用的設備名,通常是文件名。             * type device_type  設備類型,例如mpegvideo或waveaudio,可省略。             * alias device_alias 設備別名,指定后可在其他命令中代替設備名。             */            mciSendString(string.Format("open /"{0}/" type mpegvideo alias media", file), null, 0, IntPtr.Zero);            /*             * play device_alias from pos1 to pos2 wait repeat  開始設備播放             * 若省略from則從當前磁道開始播放。             * 若省略to則播放到結束。             * 若指明wait則等到播放完畢命令才返回。即指明wait會產生線程阻塞,直到播放完畢             * 若指明repeat則會不停的重復播放。             * 若同時指明wait和repeat則命令不會返回,本線程產生堵塞,通常會引起程序失去響應。             */            mciSendString("play media wait", null, 0, IntPtr.Zero);            /*             * close    關閉設備             */            mciSendString("close media", null, 0, IntPtr.Zero);        }        /// <summary>        /// 循環播放        /// </summary>        /// <param name="file"></param>        private void PlayRepeat(string file)        {            mciSendString(string.Format("open /"{0}/" type mpegvideo alias media", file), null, 0, IntPtr.Zero);            mciSendString("play media repeat", null, 0, IntPtr.Zero);        }        private Thread thread;        /// <summary>        /// 播放音頻文件        /// </summary>        /// <param name="file">音頻文件路徑</param>        /// <param name="times">播放次數,0:循環播放 大于0:按指定次數播放</param>        public void Play(string file, int times)        {            //用線程主要是為了解決在播放的時候指定wait時產生線程阻塞,從而導致界面假死的現象            thread = new Thread(() =>                {                    if (times == 0)                    {                        PlayRepeat(file);                    }                    else if (times > 0)                    {                        for (int i = 0; i < times; i++)                        {                            PlayWait(file);                        }                    }                });            //線程必須為單線程            thread.SetApartmentState(ApartmentState.STA);            thread.IsBackground = true;            thread.Start();        }        /// <summary>        /// 結束播放的線程        /// </summary>        public void Exit()        {            if (thread != null)            {                try                {                    thread.Abort();                }                catch { }                thread = null;            }        }    }}

 

三、調用:

new MCI().Play("音頻文件路徑",播放次數);

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品刺激对白麻豆99 | 一级成人免费 | 欧美精品在线免费观看 | 亚洲欧美在线看 | 精品一区二区亚洲 | 天天操天天碰 | 毛片在线免费视频 | 一级电影免费看 | 2021国产精品视频 | 黄色一级片免费在线观看 | 午色影院| 精品在线免费播放 | 中文字幕一区二区三区四区 | 国产日韩三区 | av成人免费 | 成人免费一区二区三区在线观看 | 中文字幕精品在线播放 | 国产精选电影免费在线观看 | 中文字幕免费一区 | 最新精品在线 | 精品一区二区三区在线观看国产 | 欧美一级不卡视频 | 91久久国产综合精品女同国语 | 日韩黄网站| va免费视频 | 欧美亚洲国产成人综合在线 | 九九热精品视频在线 | 亚洲午夜国产 | 久久久线视频 | 久久性生活免费视频 | 一本色道久久综合亚洲精品图片 | 欧美激情在线播放 | av电影在线观看网站 | 李宗瑞国产福利视频一区 | 午夜久久久精品一区二区三区 | 久久网站免费 | 日本成人一区二区 | 国产1区视频 | 成人黄视频在线观看 | 久久精品视频1 | 四季久久免费一区二区三区四区 |