我的办公室最近从运行Windows 7转为使用在Windows Server 2012上运行的远程桌面会话。我使用的一些VBA宏包括调用Windows API中的“Beep”功能,我将其用作执行的音频警报已经完成了。这是“Beep”的版本,它接收频率参数和持续时间参数,并以ms为单位播放该频率的蜂鸣声,持续时间为ms。但是,在新系统上,没有播放声音,并且在调用该功能后没有延迟。 Microsoft是否删除了Server 2012中的Beep功能?
编辑:这是一个 不同的 问题,而不是关于Windows 7中关于Beep的链接讨论。我以前在Windows 7上使用此代码没有任何问题。我已经检查过我的电脑的扬声器已打开,它们已插入,系统音量未静音。这里的行为是Beep()被视为null;执行时没有任何反应。如果声音被简单地静音,则代码将至少延迟直到指示的毫秒数已经过去;相反,Beep()被跳过,就像我的代码中根本不存在一样。例如,以下代码:
Sub beepTest()
k = Beep(523, 5000)
MsgBox("All Done!")
End Sub
在旧的Windows 7系统上,计算机将在插入的扬声器上播放音调5秒钟,然后弹出消息框。但是,当在Server 2012 RDP内部运行时,对Beep()的调用基本上被忽略,并且消息框立即出现,没有5秒延迟。这意味着它可以不只是一个未插入或静音的声音设备;如果是,则听不到声音,但 仍然是延迟,类似于调用Sleep()函数。我想知道微软是否可能在Server 2012中删除了对此API的支持,这可以解释为什么我的代码没有按预期工作。