Wie kann ich den Computer in C # piepen lassen?

104

Wie kann ich den internen Lautsprecher des Computers in C # ohne externe Lautsprecher piepen lassen?

a_hardin
quelle

Antworten:

192

In .Net 2.0 können Sie Console.Beep () verwenden.

// Default beep
Console.Beep();

Sie können auch die Häufigkeit und Länge des Pieptons in Millisekunden angeben.

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

Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/8hftfeyw%28v=vs.110%29.aspx

a_hardin
quelle
11
Ich habe gerade in Win 7 x64 RC getestet, und obwohl der interne Lautsprecher nicht piepste, gab es einen Piepton durch die Lautsprecher, als ich sie ein- und einschaltete. Ich denke, es ist nur der interne (Mobo) Lautsprecher, der nicht piept. Danke für die Info @Lck.
a_hardin
22
Und hier ist der Grund: blogs.msdn.com/larryosterman/archive/2010/01/04/…
Michael Stum
3
Es sollte auf x64 funktionieren, aber der Ton wird über die normalen Lautsprecher ausgegeben (die stummgeschaltet werden können). blogs.msdn.com/larryosterman/archive/2010/01/04/…
Tarnay Kálmán
Ich habe x86, aber es wird kein Ton über den internen Lautsprecher abgespielt! Nur externer Lautsprecher? !!!!
Rafik Bari
1
@ LorenzCK Das ist ... nicht 100% wahr? Ich habe Win7 64 und Beep()kann über externe Lautsprecher einen vollständigen Frequenzbereich hören . +1 für den internen Teil, das habe ich jedoch nie bemerkt.
BK
145

Sie können auch das relativ unbenutzte verwenden:

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

Die Dokumentation zu diesen Sounds finden Sie unter http://msdn.microsoft.com/en-us/library/system.media.systemsounds(v=vs.110).aspx

Ta01
quelle
Leider erfordern diese Systemtöne externe Lautsprecher, auf die man nicht immer zählen kann. Es ist auf jeden Fall gut, diese zu kennen!
a_hardin
1
Da Sie nun wissen, dass für x64-Versionen von Windows Lautsprecher erforderlich sind, um Console.Beep () zu hören, funktionieren diese Optionen genauso gut.
a_hardin
4
Mein Vista x64 auf einem Laptop mit eingebauten Lautsprechern spielt Console.Beep () nicht ab, aber diese sind in Ordnung.
Andy Dent
22

Die Lösung wäre:

Console.Beep
Barry Kelly
quelle
13

Versuche dies

Console.WriteLine("\a")

Chris Ballance
quelle
7

Es wird bestätigt, dass Windows 7 und neuere Versionen (mindestens 64 Bit oder beide) keine Systemlautsprecher verwenden und stattdessen den Anruf an das Standard-Audiogerät weiterleiten.

Die Verwendung system.beep()in win7 / 8/10 erzeugt also keinen Ton über den internen Systemlautsprecher. Stattdessen erhalten Sie einen Signalton von externen Lautsprechern, sofern diese verfügbar sind.

kuma DK
quelle
Es gibt jedoch keine Garantie dafür, dass es über die Soundkarte funktioniert / piept. Auf meinem Windows 10-Computer ertönt kein Piepton - die Soundkarte funktioniert natürlich
hfrmobile
4

Ich bin gerade auf diese Frage gestoßen, als ich nach einer Lösung für mich gesucht habe. Sie können die System-Beep-Funktion aufrufen, indem Sie einige Kernel32-Funktionen ausführen.

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
        }

Dies ist das gleiche, wie Sie Powershell ausführen würden:

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