Как я могу сделать звуковой сигнал компьютера в С#?

Как сделать внутренний звуковой сигнал компьютера на С# без внешних громкоговорителей?

Ответ 1

В .Net 2.0 вы можете использовать Console.Beep().

// Default beep
Console.Beep();

Вы также можете указать частоту и длину звукового сигнала в миллисекундах.

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

Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx

Ответ 2

Вы также можете использовать относительно неиспользуемые:

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

Документация по этим звукам доступна в http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ответ 3

Console.Beep

Ответ 4

Попробуйте это

Console.WriteLine("\a")

Ответ 5

Подтверждено, что win7 и более поздние версии (не менее 64 бит или оба) доза не использует системный динамик, и вместо этого они перенаправляют вызов на звуковое устройство по умолчанию.

Итак, использование system.beep() в win7/8/10 не будет звучать с использованием внутреннего динамика системы. Но вы получите звуковой сигнал из внешних громкоговорителей, если он доступен.

Ответ 6

Я просто наткнулся на этот вопрос, ища решение для себя. Вы можете подумать о вызове функции системного звукового сигнала, запустив некоторые файлы ядра32.

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
        }

Это то же самое, что вы запускали powershell:

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