windows 自带winmm.dll播放音频问题

同事用的一个录音小程序在他机器上可以用,换了两个电脑不能用,获取音频长度时总是0,检查代码也没有发现具体问题。最后发现是电脑声卡驱动的问题。更新声卡驱动好了。

附上播放音频的代码:

首先,导入dll文件。

 [DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
 public static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);

  播放音频:

  string buf = "";
buf = buf.PadLeft(128, ' ');
 strFileName = "open " + Convert.ToChar(34) + strFileName + Convert.ToChar(34) + " alias media";
 APIClass.mciSendString(strFileName, buf, buf.Length, 0); //初始化音频文件 
APIClass.mciSendString("play media", buf, buf.Length, 0); //播放音频文件 

  获取音频长度:

            string durLength = "";
            durLength = durLength.PadLeft(128, Convert.ToChar(" "));
            APIClass.mciSendString("status media length", durLength, durLength.Length, 0);
            durLength = durLength.Trim().Replace("","");

            if (string.IsNullOrEmpty(durLength))

                return 0;

            else

                return Convert.ToInt32(durLength)/1000;       

Replace("","")是刚开始定位的问题,不replace直接报异常。加上replace,长度又都为0,未获取到音频长度。

装上声卡驱动解决问题。开发的电脑上都没有装声卡驱动,(*@ο@*) 哇~

原文地址:https://www.cnblogs.com/meng9527/p/9558198.html