Как заставить компьютер пищать на C #?

105

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

a_hardin
источник

Ответы:

193

В .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

a_hardin
источник
11
Я только что тестировал Win 7 x64 RC, и, хотя внутренний динамик не издавал звуковых сигналов, был звуковой сигнал через динамики, когда я их подключал и включал. Думаю, это просто внутренний (подвижный) динамик, который не пищит. Спасибо за информацию @Lck.
a_hardin
22
И вот почему: blogs.msdn.com/larryosterman/archive/2010/01/04/…
Майкл Штум
3
Он должен работать на x64, но звук будет выходить через обычные динамики (которые можно отключить). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán,
у меня x86 но звук из внутреннего динамика не воспроизводится! Только внешний динамик? !!!!
Рафик Бари
1
@LorenzCK Это ... не 100% правда? У меня Win7 64, и я могу слышать весь диапазон Beep()русских частот через внешние динамики. Однако +1 за внутреннюю часть я так и не понял.
BK
146

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

    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

Ta01
источник
К сожалению, для этих системных звуков требуются внешние динамики, на которые не всегда можно рассчитывать. Хотя это определенно хорошо знать!
a_hardin 01
1
Теперь, зная, что x64-версии Windows требуют, чтобы динамики слышали Console.Beep (), эти параметры будут работать так же хорошо.
a_hardin
4
Моя Vista x64 на ноутбуке со встроенными динамиками не воспроизводит Console.Beep (), но это нормально.
Энди Дент
22

Решение было бы,

Console.Beep
Барри Келли
источник
14

Попробуй это

Console.WriteLine("\a")

Крис Балланс
источник
7

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

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

kuma DK
источник
Но нет гарантии, что он работает / пищит через звуковую карту. На моей машине с Windows 10 звукового сигнала нет - звуковая карта, конечно, работает
hfrmobile
4

Я только что наткнулся на этот вопрос, когда искал решение для себя. Вы можете рассмотреть вопрос о вызове функции системного звукового сигнала, запустив какой-нибудь материал 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
        }

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

[console]::beep(1000, 1600)
[console]::beep(2000, 400)
Якуб Сумиато
источник