观沧海_zhx 2018-12-27 12:28 采纳率: 0%
浏览 766
已结题

C#的程序长年自动工作,自动播放报警音乐,在windows 7下时常就不发声了?

我处使用C#,System.Media.SoundPlayer及WindowsMediaPlayer自动播放报警音乐,需要全年24小时工作。以前在windows XP下使用正常。
现在在windows 7下使用,时常不发声了。重启电脑后又能正常工作一段时间。
请问:怎样设置可以正常工作?
请问:在windows 7下,windows 10下也可以,哪种声音播放可以不间断、可靠使用?
axWindowsMediaPlayer1.URL = GV.gcMusicLibPath + MusicName + ".mp3"; // 乐曲名称(包含路径)
axWindowsMediaPlayer1.Ctlcontrols.play(); ; // 播放呼叫
System.Threading.Thread.Sleep(5000); // 每种音乐只播放前n秒

axWindowsMediaPlayer1.close(); // 停止播放
请各位大侠赐教。

  • 写回答

1条回答 默认 最新

  • threenewbee 2018-12-27 04:36
    关注

    axWindowsMediaPlayer是对windows media player这个播放软件的封装,相当于启动一个庞大的外挂软件,自然可靠性就差,特别是你不断调用它。
    建议你调用PlaySound(string pszSound,int hmod,int fdwSound)
    [DllImport("winmm.dll")]
    public static extern bool PlaySound(string pszSound,int hmod,int fdwSound);
    public const int SND_FILENAME = 0x00020000;
    public const int SND_ASYNC = 0x0001;
    这个api函数非常可靠。但是可能需要你把警报mp3先转换成wav格式(比如用windows附件自带的录音机)

    还有一个更可靠的
    MessageBeep
    using System.Runtime.InteropServices;

    public const int MB_ICONEXCLAMATION = 48;

    [DllImport("user32.dll")]
    public static extern bool MessageBeep(uint uType);

    MessageBeep( MB_ICONEXCLAMATION );

    这东西播放的是windows自带的各种报警音。不能直接播放外部文件(但是你可以在控制面板的声音里把你的外部声音作为报警音)

    评论

报告相同问题?

悬赏问题

  • ¥15 数学的三元一次方程求解
  • ¥20 iqoo11 如何下载安装工程模式
  • ¥15 本题的答案是不是有问题
  • ¥15 关于#r语言#的问题:(svydesign)为什么在一个大的数据集中抽取了一个小数据集
  • ¥15 C++使用Gunplot
  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 蓝桥杯单片机第十三届第一场,整点继电器吸合,5s后断开出现了问题