在内部扬声器播放声音,并可能使用旧的XP APIfunction?

Windows vista发布后,Windowsfunction提示音会在连接的扬声器上发出嘟嘟声,而不是内置扬声器。

有没有办法访问旧function? 是否有可能通过在较旧的Windows API中获取? 或者还有什么其他方法可以使这成为可能吗? 如果是这样,我想能够设置频率和持续时间。

我应该提到,我实际上是针对Windows XP平台。

不。该函数是在coreel32.dll中实现的,该coreel32.dll在运行时从您当前运行的任何版本的操作系统中加载。 由于代码不存在于可执行文件或系统DLL中,因此无法运行(甚至不要考虑从不同的操作系统版本复制coreel32.dll,这只是尖叫而已)。

您可以尝试使用MessageBeep而不是Beep ,但是这样可以减少对输出的控制,并且可能还会使用声卡而不是内部声卡

有关MessageBeep函数的有趣历史,请参阅Larry Osterman的博客 。

现在大多数电脑没有内置扬声器,所以没有什么可以访问的。

根据Larry Osterman的博客 ,该功能在Windows 7中被有意删除; 这个帖子从档案里专门讨论了这个问题。 似乎Beep.sys被删除,并且旧的伪设备驱动程序的功能被改为故意将声音重定向到声卡。 这篇文章从历史的角度来看是一个有趣的阅读。

Larry是MS的一名员工,他为Vista和Win7开发了新的音频框架,从恐龙时代(至少是MS-DOS:D)开始他一直在MS工作,所以他可能知道。 🙂