无限制系统扬声器发出蜂鸣声

时间:2010-01-20 20:41:28

标签: c# beep

现在,我知道我可以用Console.Beep发出设定持续时间的嘟嘟声,但我正在寻找的是一种无限播放特定频率的声音的方法,如启动和停止功能。有什么想法吗?

3 个答案:

答案 0 :(得分:3)

如果您想要发出除控制台名称空间中提供的蜂鸣声以外的其他蜂鸣声,则必须直接与扬声器对话。使用Kernel32.dll执行此操作:

首先确保包含互操作:

using System.Runtime.InteropServices;

然后为Beep添加extern方法,并从其他方法中使用它,这个方法会根据你想要的频率在扬声器上发出哔哔声。

[DllImport("Kernel32.dll")]
public static extern bool Beep(Int32 frequency, Int32 duration);
public static void BeepFor(int mSec, int freq)
{
  int Frequency = freq;
  int DurationInMS = mSec;
  Beep(Frequency, DurationInMS);
}

答案 1 :(得分:0)

您可以使用MIDI

您也可以使用指定了SND_LOOP和SND_ASYNC的PlaySound API来循环WAV文件。

在现代PC上无限期播放相同声音的概念有点变幻无常,除非您处于硬件级别,您可以在其中编写和控制无限循环或仅以特定频率“打开”扬声器。更高级别的API和编程语言不会允许这样做,因为在这个级别上,操作系统正在迫使您与其他应用程序一起使用。

修改

还应该注意,Beep调用的持续时间以毫秒为单位,它确实采用Int32值。 Int32.MaxValue毫秒是looooong时间。可能比任何人都能听到哔哔声更多了。

答案 2 :(得分:0)

在这些问题中,第一反应应该是:

你真正想要完成什么?你真的想要无限期的嘟嘟声,还是想要播放更长时间的声音?