¿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?

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


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


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


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



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.


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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.