在 windows vista 发布后,Windows 功能蜂鸣器会在您连接的扬声器上播放蜂鸣声,而不是内部扬声器。
反正有没有访问旧功能?是否可以通过使用较旧的 Windows api 来实现?或者有没有其他方法可以让这成为可能?如果是这样,我希望能够设置频率和持续时间。
我应该提一下,我实际上是针对 windows xp 平台的。
否。该函数在 Kernel32.dll 中实现,它在运行时从您当前运行的任何版本的操作系统加载。由于代码不存在于您的可执行文件或系统 DLL 中,因此您无法运行它(甚至不要考虑从不同的操作系统版本复制 Kernel32.dll,这只是在找麻烦)。
您可以尝试使用MessageBeep
而不是Beep
,但这使您对输出的控制较少,并且可能仍会使用您的声卡而不是内部
有关该MessageBeep
函数的有趣历史,请参阅Larry Osterman 的博客。
大多数计算机现在没有内置扬声器,因此没有任何东西可以访问。
根据Larry Osterman 的博客,该功能在 Windows 7 中被有意删除;档案中的这篇文章专门讨论了这个问题。似乎已将Beep.sys
其删除,并且旧的伪设备驱动程序的功能已更改为故意将声音重定向到声卡。从历史的角度来看,这篇文章很有趣。
Larry 是一名 MS 员工,他为 Vista 和 Win7 开发新的音频框架,他从恐龙时代就一直在 MS(至少是 MS-DOS:D)所以他可能知道。:)