观沧海_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 SQL Server下载
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥15 python爬取bilibili校园招聘网站
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件
  • ¥15 不同系统编译兼容问题
  • ¥100 三相直流充电模块对数字电源芯片在物理上它必须具备哪些功能和性能?
  • ¥30 数字电源对DSP芯片的具体要求