13

私はWinFormsアプリを持っています。このアプリには、アラートが表示されているときに再生されるサウンドをユーザーが選択できる環境設定セクションがあります。

ユーザーが「重大な停止」、「重大なビープ音」などの Windows に保存されたサウンドから選択できるコンボボックスを使用することは可能ですか。これらは、[コントロール パネル] >> [サウンドとアラート] セクションにあります。

サウンドをテストするための再生ボタンを使用することもできますか?

4

3 に答える 3

15

システム サウンドを再生するのに API は必要ありません。次のようなコードを記述します。

// Plays the sound associated with the Asterisk system event.
System.Media.SystemSounds.Asterisk.Play();

このSystemSoundsクラスには、次の事前定義されたシステム サウンドが含まれています。

  • アスタリスク
  • ビープ
  • 感嘆符
  • 質問

他のすべてのサウンドは、レジストリから目的のサウンドを読み取り、次のようなコードで再生する必要があります。

SoundPlayer simpleSound = new SoundPlayer(@"c:\Path\To\Your\Wave\File.wav");
于 2011-03-04T12:12:48.577 に答える
13

これを試して:

    private void Form1_Load(object sender, EventArgs e)
    {

        var systemSounds = new[]
                              {
                                  System.Media.SystemSounds.Asterisk,
                                  System.Media.SystemSounds.Beep,
                                  System.Media.SystemSounds.Exclamation,
                                  System.Media.SystemSounds.Hand,
                                  System.Media.SystemSounds.Question
                              };

        comboBox1.DataSource = systemSounds;

        comboBox1.SelectedIndexChanged += new EventHandler(comboBox1_SelectedIndexChanged);
    }

    void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        ((System.Media.SystemSound)comboBox1.SelectedItem).Play();
    }
于 2011-03-04T13:19:54.833 に答える
8

もちろん!探しているすべてのサウンドは、サウンドをトリガーするイベントの種類に対応するパブリック プロパティとして公開されているSystem.Media.SystemSoundsクラスを通じて利用できます。

さらに、SystemSoundクラスのオブジェクトは、そのサウンドを非同期で再生するために呼び出すことができるPlayメソッドを提供します。

たとえば、「クリティカル ストップ」サウンドを再生するには、次のコードを記述します。

System.Media.SystemSounds.Hand.Play();
于 2011-03-04T12:13:35.450 に答える