外部スピーカーなしでC#でコンピューターの内部スピーカーを鳴らすにはどうすればよいですか?
.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 を参照してください
比較的未使用のものも使用できます。
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 で入手できます。
Console.Beep
これを試して
Console.WriteLine("\a")
win7以降のバージョン(少なくとも64ビットまたは両方)システムスピーカーを使用しないでくださいが確認され、代わりにデフォルトのサウンドデバイスに呼び出しがルーティングされます。
したがって、win7/8/10でsystem.beep()
を使用しても、内部システムスピーカーを使用して鳴ることはありません。ただし、使用可能な場合は、外部スピーカーからビープ音が鳴ります。
自分で解決策を探しているときに、この質問に出くわしました。 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)