2017-12-29 53 views
1

System.Mediaを使用している場合、あなたは簡単にオペレーティングシステムのカップルを再生することができますSystemSoundsと呼ばれるものがあるが聞こえる:Windows通知音を再生するにはどうすればよいですか? (これはSystem.Media.SystemSoundsで定義されていません)

System.Media.SystemSounds.Asterisk.Play(); 
System.Media.SystemSounds.Beep.Play(); 
System.Media.SystemSounds.Exclamation.Play(); 
System.Media.SystemSounds.Hand.Play(); 
System.Media.SystemSounds.Question.Play(); 

は残念ながら、これらは唯一の存在します5つのオプションがあり、Windows 10では3つは同じものですが、そのうちの1つは何も再生しません。私は本当に何をしたいのか

は(ここで見られる)サウンドパネルで定義されているように、通知音を再生します:

(imgur: Notification sound in the Sound Panel)

これを行う方法を誰もが知っていますか?

+0

[This](https://stackoverflow.com/a/5193534/2974754)はあなたの質問に答える必要があります。 – Yuriy

+0

閉じる...投稿は私がレジストリからサウンドファイルへのパスを取得する必要があると言います。しかし、レジストリから読んで、右のキーを見つけることはもちろんのこと、ワックスの完全な他のボールです! :-p – FNG

答えて

0

解決策が見つかりました。コードはこちら

using System.Media; 
using Microsoft.Win32; 

public void PlayNotificationSound() 
{ 
    bool found = false; 
    try 
    { 
     using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"AppEvents\Schemes\Apps\.Default\Notification.Default\.Current")) 
     { 
      if (key != null) 
      { 
       Object o = key.GetValue(null); // pass null to get (Default) 
       if (o != null) 
       { 
        SoundPlayer theSound = new SoundPlayer((String)o); 
        theSound.Play(); 
        found = true; 
       } 
      } 
     } 
    } 
    catch 
    { } 
    if (!found) 
     SystemSounds.Beep.Play(); // consolation prize 
} 

レジストリエディタでキーを参照すると、他のサウンドが表示されます。また、この例はWindows 10で動作するようにコーディングされていますが、レジストリ構造がWindowsの他のバージョンではわからないため、コードを作成しようとしている場合、ユーザーが使用しているOSを確認する必要があります複数のプラットフォームの場合

関連する問題