Cara memutar suara di C #, .NET


124

Saya memiliki aplikasi Windows yang ditulis dalam C # /. NET.

Bagaimana saya bisa memainkan suara tertentu saat tombol diklik?

Jawaban:


234

Anda bisa menggunakan:

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

33
Ini adalah jawaban yang sempurna karena pengguna baru dapat memahami bahwa SoundPlayer adalah milik System.Media ....
Khilen Maniyar

31
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp "Artinya menafsirkan string berikut sebagai literal. Artinya, \ dalam string sebenarnya akan menjadi" \ "di keluaran, daripada harus menempatkan "\\" sebagai karakter literal "
Praveen

Jawaban @ Praveen hanya memberikan fakta informatif lainnya. Terima kasih kepada Dexter karena menanyakan simbol "@" itu.
Allen Linatoc

2
@bporter, ini sepertinya tidak bekerja dengan file mp3; itu dibatasi hanya untuk format wav
Najeeb

Sayang sekali API ini! Itu tidak memainkan file MP3 atau MIDI. Sama sekali tidak berguna bagi saya. Windows memiliki dukungan asli untuk MP3 dan MIDI setidaknya sejak Windows XP. Malu di Microsoft!
Elmue

91

Anda dapat menggunakan SystemSound , misalnya System.Media.SystemSounds.Asterisk.Play();,.


sangat berguna. ini dapat membantu untuk menggunakan default sistem.
Babak.Abad

4
Penting untuk dicatat bahwa jika Anda mematikan suara sistem di pengaturan Windows (setidaknya Windows yang lebih baru) itu tidak memutar apa pun.
Artholl

32

Untuk Formulir Windows, salah satu caranya adalah dengan menggunakan 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()
    }
}

Halaman MSDN

Ini juga akan berfungsi dengan WPF, tetapi Anda memiliki opsi lain seperti menggunakan MediaPlayer halaman MSDN


1
Lebih baik lagi, dalam kode produksi, buat hanya sekali dan gunakan berkali-kali daripada membuatnya setiap kali tombol ditekan.
Shibumi

Saya akan mengganti nama fungsi itu menjadi ButtonClick, hanya karena sepertinya itu lebih mengikuti gaya penamaan C #.
Ethan Bierlein

1
@EthanBierlein - itu mungkin konvensi penamaan ketika saya memposting jawabannya;)
ChrisF

1
Hah. Jadi itu konvensi lama?
Ethan Bierlein

@EthanBierlein itu masih apa yang dibuat secara otomatis oleh proyek bentuk Windows Visual Studio
JAD

13

Informasi tambahan.

Ini adalah jawaban tingkat tinggi untuk aplikasi yang ingin menyesuaikan dengan lingkungan Windows. Rincian teknis memainkan suara tertentu disediakan dalam jawaban lain. Selain itu, selalu perhatikan dua hal ini:

  1. Gunakan lima suara sistem standar dalam skenario umum , yaitu

    • Asterisk - putar saat Anda ingin menyorot acara saat ini

    • Pertanyaan - bermain dengan pertanyaan (jendela kotak pesan sistem memainkan yang ini)

    • Seru - mainkan dengan ikon tanda seru (jendela kotak pesan sistem memainkan yang ini)

    • Bip (suara sistem default)

    • Berhenti kritis ("Hand") - bermain dengan kesalahan (jendela kotak pesan sistem memutar yang ini)
       

    Metode kelas System.Media.SystemSoundsakan memainkannya untuk Anda.
     

  2. Terapkan suara lain yang dapat disesuaikan oleh pengguna Anda di panel kontrol Suara

    • Dengan cara ini pengguna dapat dengan mudah mengubah atau menghapus suara dari aplikasi Anda dan Anda tidak perlu menulis antarmuka pengguna untuk ini - itu sudah ada di sana
    • Setiap profil pengguna dapat mengganti suara ini dengan caranya sendiri
    • Bagaimana caranya:
      • Buat profil suara aplikasi Anda di Windows Registry (Petunjuk: tidak perlu pemrograman, cukup tambahkan kunci ke penginstal aplikasi Anda.)
      • Dalam aplikasi Anda, baca jalur file suara atau sumber daya DLL dari kunci registri Anda dan mainkan. (Cara memainkan suara dapat Anda lihat di jawaban lain.)

Terima kasih atas informasi tambahan ini. Saya ingin menambahkan contoh: System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);memainkan suara Tangan . Perhatikan bahwa itu diputar secara tidak sinkron, di sini saya menambahkan perintah tidur untuk menunggu selesainya suara. Jika Anda tidak menunggu, dan memutar suara lain, suara sebelumnya segera berhenti.
Matt


2

Untuk memainkan file Audio dalam bentuk Windows menggunakan C # mari kita periksa contoh sederhana sebagai berikut:

1. Buka Visual Studio (VS-2008/2010/2012) -> Menu File -> klik Proyek Baru.

2. Di New Project -> klik Windows Forms Application -> Beri Nama lalu klik OK.

Proyek "Windows Forms" baru akan terbuka.

3. Drag-and-Drop a Button control dari Toolbox ke Windows Form.

4. Klik dua kali tombol untuk membuat pengendali kejadian Klik default secara otomatis, dan tambahkan kode berikut.

Kode ini menampilkan kotak dialog Buka File dan meneruskan hasilnya ke metode bernama "playSound" yang akan Anda buat di langkah berikutnya.

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


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

5. Tambahkan kode metode berikut di bawah event hander button1_Click.

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

6. Sekarang mari kita jalankan aplikasi hanya dengan menekan F5 untuk menjalankan kode.

7. Klik tombol dan pilih file audio. Setelah file dimuat, suara akan diputar.

Semoga ini menjadi contoh yang berguna untuk pemula ...


1

Saya rasa Anda harus terlebih dahulu menambahkan file .wav ke Resources. Misalnya Anda memiliki file suara bernama Sound.wav. Setelah Anda menambahkan file Sound.wav ke Resources, Anda dapat menggunakan kode ini:

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

Ini adalah cara lain untuk memutar suara.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.