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?

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


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


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


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



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.


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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.