C# 使用mciSendString 做音乐播放,控制音乐播放速度时报错,MCIERR_BAD_INTEGER

xl_love 2020-07-01 09:19:37
C# 使用mciSendString 做音乐播放,控制音乐播放速度时报错,MCIERR_BAD_INTEGER
报错代码片段如下,整体代码是参考https://blog.csdn.net/wchm01605/article/details/2915623?utm_source=blogxgwz8

public bool SetSpeed(int Speed)
{
bool result = false;
double speed = 0.05;
string MciCommand = string.Format("set NOWMUSIC speed to {0}", speed);
int RefInt = mciSendString(MciCommand, null, 0, IntPtr.Zero);
Console.WriteLine("############## 返回值是"+RefInt+" ##############");
if (RefInt == 0)
{
result = true;
}
return result;
}



运行时返回的错误码是270 ,对应的错误是 MCIERR_BAD_INTEGER
百度了好久没有找到解决方案,还看到好几处说没有控制播放速度的函数。但是人家代码都有实现过。现在真的是搞不明白了。
而且我在官方文档https://docs.microsoft.com/zh-cn/windows/win32/multimedia/mci-functions?redirectedfrom=MSDN中也没有找到具体的设置速度的例子。
求知道的能给与解答
...全文
4202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xl_love 2020-08-04
  • 打赏
  • 举报
回复
引用 6 楼 新月星雪 的回复:
不给分就结贴了??
不好意思啊,你回答之前就已经结贴了,没法再分配分数了
BlazeZhu 2020-07-29
  • 打赏
  • 举报
回复
这以后积极性也不高了
新月星雪 2020-07-27
  • 打赏
  • 举报
回复
不给分就结贴了??
xl_love 2020-07-26
  • 打赏
  • 举报
回复
引用 3 楼 新月星雪 的回复:
我也遇到你同样的问题了,刚刚解决了。你代码里的命令多了一个to 修改后:
        
/// <summary>
        /// 控制播放速度
        /// </summary>
        /// <param name="speed"></param>
        public bool SetSpeed(int speed)
        {
            durLength = "";
            durLength = durLength.PadLeft(128, Convert.ToChar(" "));
            speed = 1200;
            bool result = false;
            string MciCommand = string.Format("set media speed {0}", speed);
            int RefInt = mciSendString(MciCommand, durLength, durLength.Length, 0);
            if (RefInt == 0)
                result = true;
            return result;
        }
非常感谢你给指出问题的所在
新月星雪 2020-07-20
  • 打赏
  • 举报
回复
我也遇到你同样的问题了,刚刚解决了。你代码里的命令多了一个to
修改后:
        
/// <summary>
/// 控制播放速度
/// </summary>
/// <param name="speed"></param>
public bool SetSpeed(int speed)
{
durLength = "";
durLength = durLength.PadLeft(128, Convert.ToChar(" "));
speed = 1200;
bool result = false;
string MciCommand = string.Format("set media speed {0}", speed);
int RefInt = mciSendString(MciCommand, durLength, durLength.Length, 0);
if (RefInt == 0)
result = true;
return result;
}
xl_love 2020-07-05
  • 打赏
  • 举报
回复
3000多人的查看,没有一个人的回复,是我问的问题太low了嘛

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧