Як можна зробити звуковий сигнал комп'ютера в 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/…
Тарнай Калман

у мене 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

1
Тепер, знаючи, що для версій Windows x64 потрібні динаміки, щоб слухати 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
        }

Це те саме, що ви запустили shellhell:

[console]::beep(1000, 1600)
[console]::beep(2000, 400)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.