zhangxu65
观沧海_zhx
采纳率0%
2018-12-27 12:28 阅读 723

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

300

我处使用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条回答 默认 最新

  • caozhy 从今以后生命中的每一秒都属于我爱的人 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自带的各种报警音。不能直接播放外部文件(但是你可以在控制面板的声音里把你的外部声音作为报警音)

    点赞 评论 复制链接分享

相关推荐