C #, .NET'te ses nasıl çalınır


124

C # /. NET ile yazılmış bir Windows uygulamam var.

Bir düğmeye tıklandığında belirli bir sesi nasıl çalabilirim?

Yanıtlar:


234

Kullanabilirsin:

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

33
Bu mükemmel bir cevap çünkü yeni bir kullanıcı SoundPlayer'ın System.Media'ya ait olduğunu anlayabilir ....
Khilen Maniyar

31
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp "Aşağıdaki dizeyi değişmez olarak yorumlamak anlamına gelir. Yani, dizedeki \ aslında içinde bir" \ "olacaktır. "\\" harfi
harfini

@ Praveen'in cevabı başka bir bilgilendirici gerçek verdi. "@" Sembolünü sorduğu için Dexter'a teşekkürler.
Allen Linatoc

2
@bporter, bu mp3 dosyalarıyla çalışmıyor gibi görünüyor; yalnızca wav formatıyla sınırlıdır
Najeeb

Bu API ne yazık! MP3 veya MIDI dosyalarını çalmaz. Benim için tamamen işe yaramaz. Windows, en azından Windows XP'den beri MP3 ve MIDI için yerel desteğe sahiptir. Microsoft utanç verici!
Elmue

91

Örneğin SystemSound'u kullanabilirsiniz System.Media.SystemSounds.Asterisk.Play();.


çok kullanışlı. sistem varsayılanlarını kullanmak yardımcı olabilir.
Babak.Abad

4
Windows ayarlarında (en azından daha yeni Windows) sistem seslerini kapatırsanız hiçbir şey çalmayacağına dikkat etmek önemlidir.
Artholl

32

Windows Forms için bir yol, 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 sayfası

Bu aynı zamanda WPF ile de çalışacaktır, ancak MSDN sayfasını kullanmak gibi başka seçenekleriniz de varMediaPlayer


1
Daha da iyisi, üretim kodunda, sadece bir kez oluşturun ve düğmeye her basıldığında oluşturmak yerine birçok kez kullanın.
Shibumi

Bu işlevi olarak yeniden adlandırıyorum ButtonClick, çünkü C # adlandırma stilini daha çok takip ediyor gibi görünüyor.
Ethan Bierlein

1
@EthanBierlein - cevabı gönderdiğimde muhtemelen adlandırma
kuralıydı

1
Huh. Yani eski kongre bu muydu?
Ethan Bierlein

@EthanBierlein, hala Visual Studio'nun Windows form projeleri tarafından otomatik olarak oluşturulan şeydir
JAD

13

Ek bilgi.

Bu, Windows ortamına sorunsuz bir şekilde uyum sağlamak isteyen uygulamalar için biraz üst düzey bir cevaptır. Belirli bir sesin çalınmasına ilişkin teknik ayrıntılar diğer yanıtlarda verilmiştir. Bunun yanı sıra, her zaman şu iki noktaya dikkat edin:

  1. Tipik senaryolarda beş standart sistem sesi kullanın , örn.

    • Yıldız - geçerli olayı vurgulamak istediğinizde oynatın

    • Soru - sorularla oynayın (sistem mesaj kutusu penceresi bunu oynatır)

    • Ünlem - ünlem işareti simgesiyle oynatın (sistem mesaj kutusu penceresi bunu oynatır)

    • Bip (varsayılan sistem sesi)

    • Kritik durdurma ("El") - hatalı oynatma (sistem mesaj kutusu penceresi bunu oynatır)
       

    Sınıfın yöntemleri System.Media.SystemSoundssizin için onları oynayacak.
     

  2. Kullanıcılarınız tarafından özelleştirilebilen diğer sesleri Ses kontrol panelinden uygulayın

    • Bu şekilde kullanıcılar uygulamanızdaki sesleri kolayca değiştirebilir veya kaldırabilir ve bunun için herhangi bir kullanıcı arayüzü yazmanıza gerek yoktur - zaten oradadır
    • Her kullanıcı profili bu sesleri kendi yöntemiyle geçersiz kılabilir
    • Nasıl:
      • Windows Kayıt Defteri'nde uygulamanızın ses profilini oluşturun (İpucu: programlamaya gerek yoktur, anahtarları uygulamanızın yükleyicisine eklemeniz yeterlidir.)
      • Uygulamanızda, kayıt defteri anahtarlarınızdan ses dosyası yolunu veya DLL kaynağını okuyun ve oynatın. (Diğer yanıtlarda görebileceğiniz sesler nasıl çalınır.)

Bu ekstra bilgi için teşekkür ederim. Bir örnek eklemek istiyorum: ElSystem.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000); sesini çalar . Eşzamansız olarak çaldığını unutmayın, burada sesin tamamlanmasını beklemek için bir uyku komutu ekledim. Beklemezseniz ve başka bir ses çalarsanız, önceki ses hemen durur.
Matt


2

C # kullanarak Windows biçiminde bir Ses dosyasını çalmak için aşağıdaki basit örneği kontrol edelim:

1. Visual Studio'ya gidin (VS-2008/2010/2012) -> Dosya Menüsü -> Yeni Proje'ye tıklayın.

2. Yeni Projede -> Windows Forms Uygulaması -> İsim Ver seçeneklerini ve ardından Tamam'ı tıklayın.

Yeni bir "Windows Forms" projesi açılacaktır.

3. Araç Kutusundan Windows Formuna bir Düğme denetimi Sürükle ve Bırak.

4. Varsayılan Click olay işleyicisini otomatik olarak oluşturmak için düğmeye çift tıklayın ve aşağıdaki kodu ekleyin.

Bu kod Dosya Aç iletişim kutusunu görüntüler ve sonuçları bir sonraki adımda oluşturacağınız "playSound" adlı bir yönteme iletir.

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


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

5. button1_Click olay işleyicisinin altına aşağıdaki yöntem kodunu ekleyin.

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

6. Şimdi kodu çalıştırmak için F5'e basarak uygulamayı çalıştıralım.

7. Düğmeye tıklayın ve bir ses dosyası seçin. Dosya yüklendikten sonra ses çalacaktır.

Umarım bu yeni başlayanlar için faydalı bir örnektir ...


1

Öncelikle Kaynaklar'a bir .wav dosyası eklemeniz gerektiğini düşünüyorum. Örneğin, Sound.wav adlı ses dosyanız var. Sound.wav dosyasını Kaynaklar'a ekledikten sonra şu kodu kullanabilirsiniz:

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

Bu, ses çalmanın başka bir yoludur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.