¿Cómo puedo hacer que la computadora emita un pitido en C #?

105

¿Cómo hago para que el altavoz interno de la computadora emita un pitido en C # sin altavoces externos?

un_hardin
fuente

Respuestas:

193

En .Net 2.0, puede usar Console.Beep ().

// Default beep
Console.Beep();

También puede especificar la frecuencia y la duración del pitido en milisegundos.

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

Para obtener más información, consulte http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx

un_hardin
fuente
11
Acabo de probar en Win 7 x64 RC, y aunque el altavoz interno no emitió un pitido, hubo un pitido a través de los altavoces cuando los enchufé y encendí. Supongo que es solo el altavoz interno (mobo) el que no pitará. Gracias por la información @Lck.
a_hardin
22
Y aquí está el motivo: blogs.msdn.com/larryosterman/archive/2010/01/04/…
Michael Stum
3
Debería funcionar en x64, pero el sonido saldrá a través de los altavoces normales (que se pueden silenciar). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán
¡Tengo x86 pero no se reproduce sonido desde el altavoz interno! ¿Solo altavoz externo?
Rafik Bari
1
@LorenzCK Eso es ... ¿no es 100% cierto? Tengo Win7 64 y puedo escuchar una gama completa de Beep()frecuencias a través de altavoces externos. Sin embargo, +1 para la parte interna, nunca me di cuenta de eso.
BK
146

También puede utilizar el relativamente no utilizado:

    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();

La documentación para estos sonidos está disponible en http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ta01
fuente
Lamentablemente, estos sonidos del sistema requieren altavoces externos, con los que no siempre se puede contar. ¡Sin embargo, definitivamente es bueno conocerlos!
a_hardin
1
Ahora, sabiendo que las versiones x64 de Windows requieren que los altavoces escuchen Console.Beep (), estas opciones funcionarán igual de bien.
a_hardin
4
Mi Vista x64 en una computadora portátil con parlantes incorporados no reproduce Console.Beep () pero están bien.
Andy Dent
22

La solución sería

Console.Beep
Barry Kelly
fuente
14

Prueba esto

Console.WriteLine("\a")

Chris Ballance
fuente
7

Se confirma que Windows 7 y las versiones más recientes (al menos de 64 bits o ambas) no usan el altavoz del sistema y en su lugar enrutan la llamada al dispositivo de sonido predeterminado.

Por lo tanto, usar system.beep()en win7 / 8/10 no producirá sonido usando el altavoz del sistema interno. En su lugar, obtendrá un pitido de los altavoces externos si están disponibles.

kuma DK
fuente
Pero no hay garantía de que funcione / emita un pitido a través de la tarjeta de sonido. En mi máquina con Windows 10 no hay pitido - la tarjeta de sonido funciona, por supuesto
hfrmobile
4

Me encontré con esta pregunta mientras buscaba la solución para mí. Podría considerar llamar a la función de pitido del sistema ejecutando algunas cosas de 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
        }

Esto es lo mismo que ejecutaría powershell:

[console]::beep(1000, 1600)
[console]::beep(2000, 400)
Jakub Szumiato
fuente