我想從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