2008-12-05 39 views
3

我想從C#程序與SystemSounds玩不工作

System.Media.SystemSounds.Asterisk.Play(); 

,但沒有播放聲音播放的Asterisk系統聲音。我的系統確實爲Asterisk和其他程序(不是由我寫的)設置了聲音,從而導致播放各種系統聲音。

任何人都可以提出任何可能的原因嗎?

+0

使用對此代碼的修改,是否可以使用其他任何系統聲音?例如。使用Exclamation而不是Asterisk。 – RobS 2008-12-05 13:36:13

+0

揚聲器是否設置爲靜音? ;) – shahkalpesh 2008-12-06 05:21:02

回答

4

我忽略了這個問題,直到今天,一些谷歌上搜索發現,這是一個相當普遍的問題,完全無關的.NET玩電話。

發生什麼事是,雖然您可以播放/預覽控制面板聲音和音頻設備小程序中的聲音,但程序觸發聲音時它們不會播放。這似乎是程序安裝造成的腐敗。修復很簡單。

HKEY_CURRENT_USER在註冊表中的(默認)條目應該是(未設置值)。如果是別的東西(我的OfficeCompleted)刪除條目(右鍵單擊並選擇刪除),它將被重新創建爲(未設置值)。然後應該播放系統聲音。

1

很抱歉,如果這是拔高了明顯...

  1. 確實正在執行這行代碼?
  2. RobS建議做任何其他SystemSounds播放?

我看了一下反射器。無論您調用哪個SystemSounds,都會返回一個SystemSound實例,並根據您想要播放的系統聲音的類型(例如Asterix的0x40)進行初始化。然後傳遞給Win32 bool MessageBeep(int type)方法。進口爲:

[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
internal static extern bool MessageBeep(int type); 

的布爾回報不保留以任何方式 - 即你不能讓它:(

異常是不可吞食,所以你應該得到任何如果拋出

。希望幫助(儘管可能只是告訴你你已經知道)

1

我只晚了8年,但我剛剛在Windows 7平板電腦上遇到了這個問題。修復它的東西?經典Restart

嘗試重新啓動設備。