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

我处使用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个回答

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自带的各种报警音。不能直接播放外部文件(但是你可以在控制面板的声音里把你的外部声音作为报警音)

zhangxu65
观沧海_zhx PlaySound(GV.gcMusicLibPath + MusicName + ".wav", 0, SND_ASYNC); // 播放呼叫 System.Threading.Thread.Sleep(5000); // 每种音乐只播放前n秒 PlaySound(null, 0, 0); // 停止播放
一年多之前 回复
zhangxu65
观沧海_zhx 不行啊。昨天装载,今天上午呼叫,就没声了。
一年多之前 回复
zhangxu65
观沧海_zhx 使用PlaySound测试。
一年多之前 回复
zhangxu65
观沧海_zhx 我已按大侠指导改正,要测试几天。谢谢。
一年多之前 回复
inkheart811
inkheart811 分析很到位
一年多之前 回复
showbo
支付宝加好友偷能量挖 正解。。。楼主可以采纳了~
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问