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


105

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

Ответы:


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


11
Я только что тестировал Win 7 x64 RC, и, хотя внутренний динамик не издавал звуковых сигналов, был звуковой сигнал через динамики, когда я их подключал и включал. Думаю, это просто внутренний (подвижный) динамик, который не пищит. Спасибо за информацию @Lck.
a_hardin


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


К сожалению, для этих системных звуков требуются внешние динамики, на которые не всегда можно рассчитывать. Хотя это определенно хорошо знать!
a_hardin 01

1
Теперь, зная, что x64-версии Windows требуют, чтобы динамики слышали Console.Beep (), эти параметры будут работать так же хорошо.
a_hardin

4
Моя Vista x64 на ноутбуке со встроенными динамиками не воспроизводит Console.Beep (), но это нормально.
Энди Дент



7

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

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


Но нет гарантии, что он работает / пищит через звуковую карту. На моей машине с 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)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.