Como posso fazer o computador bipar em C #?

105

Como faço para que o alto-falante interno do computador bipe em C # sem alto-falantes externos?

a_hardin
fonte

Respostas:

193

No .Net 2.0, você pode usar Console.Beep ().

// Default beep
Console.Beep();

Você também pode especificar a frequência e a duração do bipe em milissegundos.

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

Para obter mais informações, consulte http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx

a_hardin
fonte
11
Acabei de testar no Win 7 x64 RC e, embora o alto-falante interno não apitasse, houve um bipe nos alto-falantes quando os conectei e liguei. Eu acho que é apenas o alto-falante interno (mobo) que não apita. Obrigado pela informação @Lck.
a_hardin
22
E aqui está o porquê: blogs.msdn.com/larryosterman/archive/2010/01/04/…
Michael Stum
3
Deve funcionar no x64, mas o som sairá pelos alto-falantes normais (que podem ser silenciados). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán
eu tenho x86, mas nenhum som é reproduzido no alto-falante interno! Apenas alto-falante externo? !!!!
Rafik Bari
1
@LorenzCK Isso ... não é 100% verdade? Tenho Win7 64 e consigo ouvir uma gama completa de Beep()frequências através de alto-falantes externos. Porém, +1 para a parte interna, nunca percebi isso.
BK
146

Você também pode usar o relativamente não 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();

A documentação para esses sons está disponível em http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ta01
fonte
Infelizmente, esses sons do sistema requerem alto-falantes externos, com os quais nem sempre se pode contar. É definitivamente bom conhecê-los!
a_hardin 01 de
1
Agora, sabendo que as versões x64 do Windows requerem alto-falantes para ouvir o Console.Beep (), essas opções funcionarão da mesma forma.
a_hardin
4
Meu Vista x64 no laptop com alto-falantes embutidos não reproduz o Console.Beep (), mas esses são bons.
Andy Dent
22

A solução seria,

Console.Beep
Barry Kelly
fonte
14

Tente isto

Console.WriteLine("\a")

Chris Ballance
fonte
7

É confirmado que o Windows 7 e as versões mais recentes (pelo menos 64 bits ou ambos) não usam alto - falante do sistema e, em vez disso, encaminham a chamada para o dispositivo de som padrão.

Portanto, usar system.beep()no win7 / 8/10 não produzirá som usando o alto-falante interno do sistema. Em vez disso, você ouvirá um bipe de alto-falantes externos, se estiverem disponíveis.

kuma DK
fonte
Mas não há garantia de que funcione / emita um bipe na placa de som. Na minha máquina com Windows 10 não há bip - placa de som funciona, claro
hfrmobile
4

Acabei de me deparar com essa pergunta enquanto procurava uma solução para mim. Você pode considerar chamar a função de bipe do sistema executando algumas coisas do 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
        }

É o mesmo que você executaria o PowerShell:

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