C#、. NETでサウンドを再生する方法


124

C#/。NETで記述されたWindowsアプリケーションがあります。

ボタンがクリックされたときに特定のサウンドを再生するにはどうすればよいですか?

回答:


233

あなたは使うことができます:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();

32
新しいユーザーが.... SoundPlayerのがSystem.Mediaに属していることを理解することができますので、これは完璧な答えである
Khilen Maniyar

30
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp "これは、次の文字列をリテラルとして解釈することを意味します。つまり、文字列内の\は実際には" \ "になります"\\"を付けてリテラル文字を意味するのではなく、出力
Praveen

@Praveenの答えは、もう1つの有益な事実を与えました。その「@」記号を尋ねてくれたデクスターに感謝します。
Allen Linatoc、2015

2
@bporter、これはmp3ファイルでは機能しないようです。wav形式のみに制限されています
Najeeb

このAPIはなんて残念なことでしょう。MP3ファイルもMIDIファイルも再生しません。私にはまったく役に立たない。Windowsは、少なくともWindows XP以降、MP3およびMIDIをネイティブでサポートしています。マイクロソフトの恥!
Elmue

91

たとえば、SystemSoundを使用できますSystem.Media.SystemSounds.Asterisk.Play();


非常に便利。システムのデフォルトを使用すると役立ちます。
Babak.Abad 14

4
Windowsの設定(少なくとも新しいWindows)でシステムサウンドをオフにすると、何も再生されないことに注意してください。
Artholl 2016

32

Windowsフォームの場合、1つの方法は SoundPlayer

private void Button_Click(object sender, EventArgs e)
{
    using (var soundPlayer = new SoundPlayer(@"c:\Windows\Media\chimes.wav")) {
        soundPlayer.Play(); // can also use soundPlayer.PlaySync()
    }
}

MSDNページ

これはWPFでも機能しますが、MSDNページを使用するような他のオプションがありMediaPlayer ます


1
さらに良いことに、プロダクションコードでは、ボタンを押すたびに作成するのではなく、一度だけ作成して何度も使用します。
Shibumi

この関数の名前をに変更します。ButtonClickこれは、C#の名前付けのスタイルに従っているように見えるためです。
Ethan Bierlein 2015

1
@EthanBierlein-私が回答を投稿したのはおそらく命名規則だったでしょう;)
ChrisF

1
ええと。それが古い慣習だったのですか?
Ethan Bierlein 2015

@EthanBierleinそれでもVisual StudioのWindowsフォームプロジェクトによって自動生成されるものです
JAD

13

追加情報。

これは、Windows環境にシームレスに適合させたいアプリケーションに対する、少し高レベルの回答です。特定のサウンドの再生に関する技術的な詳細は、他の回答で提供されました。さらに、常に次の2つの点に注意してください。

  1. 典型的なシナリオ5つの標準システムサウンドを使用します

    • アスタリスク -現在のイベントを強調したいときに再生します

    • 質問 - 質問で遊ぶ(システムメッセージボックスウィンドウがこれを再生します)

    • 感嘆符 -発声アイコンで再生(システムメッセージボックスウィンドウで再生)

    • ビープ音(デフォルトのシステム音)

    • クリティカルストップ(「ハンド」)-エラーで再生(システムメッセージボックスウィンドウで再生)
       

    クラスのメソッドはSystem.Media.SystemSoundsそれらを再生します。
     

  2. サウンドコントロールパネルでユーザーがカスタマイズ可能な他のサウンドを実装する

    • このようにして、ユーザーはアプリケーションのサウンドを簡単に変更または削除することができ、このためのユーザーインターフェイスを作成する必要はありません。すでにそこにあります。
    • 各ユーザープロファイルは、これらのサウンドを独自の方法でオーバーライドできます
    • 方法:

この追加情報をありがとうございます。例を追加したいと思います:System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);サウンドHandを再生します。非同期で再生されることに注意してください。ここでは、サウンドの完了を待つスリープコマンドを追加しました。待たずに次のサウンドを再生すると、前のサウンドはすぐに停止します。
マット


2

C#を使用してWindowsフォームでオーディオファイルを再生するには、次の簡単な例を確認してみましょう。

1. Visual Studio(VS-2008 / 2010/2012)->ファイルメニュー-> [新しいプロジェクト]をクリックします。

2.新規プロジェクト-> Windowsフォームアプリケーション->名前を付けて[OK]をクリックします。

新しい「Windowsフォーム」プロジェクトが開きます。

3.ButtonコントロールをツールボックスからWindowsフォームにドラッグアンドドロップします。

4.ボタンをダブルクリックして、デフォルトのClickイベントハンドラーを自動的に作成し、次のコードを追加します。

このコードは、[ファイルを開く]ダイアログボックスを表示し、次の手順で作成する「playSound」という名前のメソッドに結果を渡します。

 OpenFileDialog dialog = new OpenFileDialog();
 dialog.Filter = "Audio Files (.wav)|*.wav";


if(dialog.ShowDialog() == DialogResult.OK)
{
  string path = dialog.FileName;
  playSound(path);
}

5. button1_Clickイベントハンドラの下に次のメソッドコードを追加します。

 private void playSound(string path)
 {
   System.Media.SoundPlayer player = new System.Media.SoundPlayer();
   player.SoundLocation = path;
   player.Load();
   player.Play();
 }

6.F5キーを押してコードを実行するだけで、アプリケーションを実行しましょう。

7.ボタンをクリックし、オーディオファイルを選択します。ファイルが読み込まれた後、サウンドが再生されます。

これが初心者にとって役に立つ例だといいのですが...


1

まず、.wavファイルをリソースに追加する必要があると思います。たとえば、Sound.wavという名前のサウンドファイルがあるとします。Sound.wavファイルをリソースに追加したら、次のコードを使用できます。

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.Sound);
player.Play();

これは、サウンドを再生する別の方法です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.