我想从C#程序与SystemSounds玩不工作
System.Media.SystemSounds.Asterisk.Play();
,但没有播放声音播放的Asterisk系统声音。我的系统确实为Asterisk和其他程序(不是由我写的)设置了声音,从而导致播放各种系统声音。
任何人都可以提出任何可能的原因吗?
我想从C#程序与SystemSounds玩不工作
System.Media.SystemSounds.Asterisk.Play();
,但没有播放声音播放的Asterisk系统声音。我的系统确实为Asterisk和其他程序(不是由我写的)设置了声音,从而导致播放各种系统声音。
任何人都可以提出任何可能的原因吗?
我忽略了这个问题,直到今天,一些谷歌上搜索发现,这是一个相当普遍的问题,完全无关的.NET玩电话。
发生什么事是,虽然您可以播放/预览控制面板声音和音频设备小程序中的声音,但程序触发声音时它们不会播放。这似乎是程序安装造成的腐败。修复很简单。
HKEY_CURRENT_USER在注册表中的(默认)条目应该是(未设置值)。如果是别的东西(我的OfficeCompleted)删除条目(右键单击并选择删除),它将被重新创建为(未设置值)。然后应该播放系统声音。
很抱歉,如果这是拔高了明显...
我看了一下反射器。无论您调用哪个SystemSounds,都会返回一个SystemSound实例,并根据您想要播放的系统声音的类型(例如Asterix的0x40)进行初始化。然后传递给Win32 bool MessageBeep(int type)方法。进口为:
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
internal static extern bool MessageBeep(int type);
的布尔回报不保留以任何方式 - 即你不能让它:(
异常是不可吞食,所以你应该得到任何如果抛出
。希望帮助(尽管可能只是告诉你你已经知道)
我只晚了8年,但我刚刚在Windows 7平板电脑上遇到了这个问题。修复它的东西?经典Restart
。
尝试重新启动设备。
使用对此代码的修改,是否可以使用其他任何系统声音?例如。使用Exclamation而不是Asterisk。 – RobS 2008-12-05 13:36:13
扬声器是否设置为静音? ;) – shahkalpesh 2008-12-06 05:21:02