3

出于某种原因,在 PAUSE 事件中按 Space 时,我的批处理脚本会发出哔哔声。

我目前有两个:

start /wait %comspec% /Q /C "net stop beep" >nul 2>&1
start /wait %comspec% /Q /C "sc stop beep" >nul 2>&1

...在我的脚本开始时,它已成功禁用系统蜂鸣声,但现在它已被 Windows“主题”蜂鸣声所取代。

当我进入 CHOICE 事件并且用户按下 Space 时,也会发生这种情况。

关于如何使批处理脚本完全静音的任何想法,即使在输入“错误”期间也是如此?

感谢:D

4

2 回答 2

1

尝试用这样的choice东西替换你的命令。

set /p choice="Please enter a choice: "

它需要用户按回车键,但至少它不会发出哔哔声。

如果您真的想以艰难的方式做到这一点并关闭默认声音,我想您会HKCU\AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current\(Default)HKCU\AppEvents\Schemes\Apps\.Default\AppGPFault\.Current\(Default).

这是一个简短的概念证明。

@echo off
setlocal

:: stop bleeping service
start /wait %comspec% /Q /C "sc stop beep" >nul 2>&1

:: store current event setting for Asterisk
set loc=HKCU\AppEvents\Schemes\Apps\.Default\SystemAsterisk\.Current
for /f "tokens=3*" %%I in ('reg query %loc%') do (
    set asterisk=%%I %%J
)

:: choice with service stopped and Windows Asterisk sound event still active
choice

:: set Windows Asterisk event sound to ""
reg add "%loc%" /v "" /t REG_SZ /d "" /f >NUL

:: choice with asterisk set to ""
choice

:: restore the sound
reg add "%loc%" /v "" /t REG_SZ /d "%asterisk%" /f >NUL

如果这不起作用,请尝试替换SystemAsteriskAppGPFault. 老实说,我无法重现你的症状。停止哔声服务后,我听到了沉默。所以我不完全确定当用户点击空格键并且哔声服务停止时会触发哪个事件。

于 2013-02-02T13:40:51.897 回答
0

您总是可以记录片刻的沉默,然后用它来代替 Windows 主题的哔声之一。

我建议您发布更多代码,以便我们查看导致哔声的原因,因为 PAUSE 不应该这样做。

于 2013-02-02T18:28:21.523 回答