1

现在,我知道我可以用 播放一段设定持续时间的哔哔声Console.Beep,但我正在寻找的是一种无限期播放特定频率声音的方法,例如开始和停止功能。有任何想法吗?

4

3 回答 3

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);
}
于 2010-01-20T20:51:26.170 回答
0

您也许可以使用MIDI

您还可以使用指定 SND_LOOP 和 SND_ASYNC的PlaySound API调用循环 WAV 文件。

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

编辑

还应该注意的是,Beep 调用的持续时间以毫秒为单位,它确实需要一个 Int32 值。Int32.MaxValue 毫秒是很长的时间。可能比任何人都无法忍受听到哔哔声。

于 2010-01-20T21:08:22.993 回答
0

与这些问题一样,第一反应应该是:

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

于 2010-01-20T21:23:34.717 回答