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