Jak sprawić, by komputer wydawał dźwięk w języku C #?

105

Jak ustawić dźwięk wewnętrznego głośnika komputera w języku C # bez zewnętrznych głośników?

a_hardin
źródło

Odpowiedzi:

193

W .Net 2.0 można użyć Console.Beep ().

// Default beep
Console.Beep();

Możesz także określić częstotliwość i długość sygnału dźwiękowego w milisekundach.

// Beep at 5000 Hz for 1 second
Console.Beep(5000, 1000);

Więcej informacji można znaleźć pod adresem http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx

a_hardin
źródło
11
Właśnie przetestowałem w Win 7 x64 RC i chociaż wewnętrzny głośnik nie wydawał sygnału dźwiękowego, rozlegał się sygnał dźwiękowy przez głośniki, gdy je podłączałem i włączałem. Wydaje mi się, że to tylko głośnik wewnętrzny (mobo), który nie wydaje sygnału dźwiękowego. Dzięki za informację @Lck.
a_hardin
22
A oto dlaczego: blogs.msdn.com/larryosterman/archive/2010/01/04/…
Michael Stum
3
Powinien działać na x64, ale dźwięk wyjdzie przez normalne głośniki (które można wyciszyć). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán
Mam x86, ale żaden dźwięk nie jest odtwarzany z wewnętrznego głośnika! Tylko głośnik zewnętrzny? !!!!
Rafik Bari
1
@LorenzCK To ... nie jest w 100% prawda? Mam Win7 64 i jestem w stanie usłyszeć pełen zakres Beep()częstotliwości przez zewnętrzne głośniki. Jednak +1 dla części wewnętrznej, nigdy nie zdawałem sobie z tego sprawy.
BK,
146

Możesz także skorzystać ze stosunkowo nieużywanych:

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

Dokumentacja tych dźwięków jest dostępna pod adresem http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ta01
źródło
Niestety te dźwięki systemowe wymagają zewnętrznych głośników, na które nie zawsze można liczyć. Jednak zdecydowanie dobrze jest to wiedzieć!
a_hardin
1
Wiedząc teraz, że wersje x64 systemu Windows wymagają głośników, aby słyszeć konsolę. Beep (), te opcje będą działać równie dobrze.
a_hardin
4
Moja Vista x64 na laptopie z wbudowanymi głośnikami nie odtwarza Console.Beep (), ale te są w porządku.
Andy Dent
22

Rozwiązaniem byłoby,

Console.Beep
Barry Kelly
źródło
14

Spróbuj tego

Console.WriteLine("\a")

Chris Ballance
źródło
7

Potwierdzono, że Windows 7 i nowsze wersje (co najmniej 64-bitowe lub obie) nie używają głośnika systemowego i zamiast tego kierują połączenie do domyślnego urządzenia dźwiękowego.

Tak więc użycie system.beep()w win7 / 8/10 nie będzie generować dźwięku przy użyciu wewnętrznego głośnika systemowego. Zamiast tego usłyszysz sygnał dźwiękowy z głośników zewnętrznych, jeśli są dostępne.

kuma DK
źródło
Ale nie ma gwarancji, że zadziała / wyda dźwięk przez kartę dźwiękową. Na moim komputerze z systemem Windows 10 nie ma sygnału dźwiękowego - karta dźwiękowa oczywiście działa
hfrmobile
4

Właśnie natknąłem się na to pytanie, szukając dla siebie rozwiązania. Możesz rozważyć wywołanie funkcji systemowego sygnału dźwiękowego, uruchamiając coś z kernel32.

using System.Runtime.InteropServices;
        [DllImport("kernel32.dll")]
        public static extern bool Beep(int freq, int duration);

        public static void TestBeeps()
        {
            Beep(1000, 1600); //low frequency, longer sound
            Beep(2000, 400); //high frequency, short sound
        }

To jest to samo, co w przypadku uruchomienia programu PowerShell:

[console]::beep(1000, 1600)
[console]::beep(2000, 400)
Jakub Szumiato
źródło