Comment puis-je faire émettre un bip en C #?

105

Comment faire bip le haut-parleur interne de l'ordinateur en C # sans haut-parleurs externes?

a_hardin
la source

Réponses:

193

Dans .Net 2.0, vous pouvez utiliser Console.Beep ().

// Default beep
Console.Beep();

Vous pouvez également spécifier la fréquence et la durée du bip en millisecondes.

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

Pour plus d'informations, consultez http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx

a_hardin
la source
11
Je viens de tester dans Win 7 x64 RC, et bien que le haut-parleur interne n'ait pas émis de bip, il y avait un bip dans les haut-parleurs lorsque je les ai branchés et allumés. Je suppose que c'est juste le haut-parleur interne (mobo) qui ne bipera pas. Merci pour l'info @Lck.
a_hardin
22
Et voici pourquoi: blogs.msdn.com/larryosterman/archive/2010/01/04/…
Michael Stum
3
Cela devrait fonctionner sur x64, mais le son sortira par les haut-parleurs normaux (qui peuvent être coupés). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán
J'ai x86 mais aucun son n'est joué par le haut-parleur interne! Seul haut-parleur externe? !!!!
Rafik Bari
1
@LorenzCK C'est ... pas vrai à 100%? J'ai Win7 64 et je suis capable d'entendre une gamme complète de Beep()fréquences via des haut-parleurs externes. Cependant, +1 pour la partie interne, je ne m'en suis jamais rendu compte.
BK
146

Vous pouvez également utiliser le relativement inutilisé:

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

La documentation de ces sons est disponible sur http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ta01
la source
Malheureusement, ces sons système nécessitent des haut-parleurs externes, sur lesquels on ne peut pas toujours compter. C'est vraiment bon de les connaître, cependant!
a_hardin
1
Maintenant que les versions x64 de Windows nécessitent des haut-parleurs pour entendre le Console.Beep (), ces options fonctionneront tout aussi bien.
a_hardin
4
Mon Vista x64 sur un ordinateur portable avec haut-parleurs intégrés ne joue pas à Console.Beep () mais c'est bien.
Andy Dent
22

La solution serait,

Console.Beep
Barry Kelly
la source
14

Essaye ça

Console.WriteLine("\a")

Chris Ballance
la source
7

Il est confirmé que Windows 7 et les versions plus récentes (au moins 64 bits ou les deux) n'utilisent pas de haut - parleur système et acheminent l'appel vers le périphérique audio par défaut.

Ainsi, l'utilisation system.beep()dans win7 / 8/10 ne produira pas de son en utilisant le haut-parleur interne du système. Au lieu de cela, vous obtiendrez un bip des haut-parleurs externes s'ils sont disponibles.

kuma DK
la source
Mais il n'y a aucune garantie que cela fonctionne / émet un bip via la carte son. Sur ma machine Windows 10, il n'y a pas de bip - la carte son fonctionne bien sûr
hfrmobile
4

Je viens de tomber sur cette question en cherchant la solution pour moi-même. Vous pourriez envisager d'appeler la fonction de bip système en exécutant des trucs 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
        }

C'est la même chose que vous exécuteriez PowerShell:

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