web-dev-qa-db-ja.com

C#でコンピューターのビープ音を鳴らすにはどうすればよいですか?

外部スピーカーなしでC#でコンピューターの内部スピーカーを鳴らすにはどうすればよいですか?

99
a_hardin

.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 を参照してください

184
a_hardin

比較的未使用のものも使用できます。

    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 で入手できます。

139
kd7

Console.Beep

21
Barry Kelly

これを試して

Console.WriteLine("\a")

11
Chris Ballance

win7以降のバージョン(少なくとも64ビットまたは両方)システムスピーカーを使用しないでくださいが確認され、代わりにデフォルトのサウンドデバイスに呼び出しがルーティングされます。

したがって、win7/8/10でsystem.beep()を使用しても、内部システムスピーカーを使用して鳴ることはありません。ただし、使用可能な場合は、外部スピーカーからビープ音が鳴ります。

6
kuma DK

自分で解決策を探しているときに、この質問に出くわしました。 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
        }

これは、powershellを実行する場合と同じです。

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